package com.gitee.wsl.time.chinese.util

import com.gitee.wsl.ext.matcher
import com.gitee.wsl.text.format.NumberFormatStyle.Pattern
import com.gitee.wsl.text.format.format


/**
 * 农历工具
 *
 * @author 6tail
 */
object LunarUtil {
    /** 月份地支偏移量，因正月起寅  */
    const val BASE_MONTH_ZHI_INDEX: Int = 2

    /** 旬  */
    val XUN: Array<String> = arrayOf<String>("甲子", "甲戌", "甲申", "甲午", "甲辰", "甲寅")

    /** 旬空  */
    val XUN_KONG: Array<String> = arrayOf<String>("戌亥", "申酉", "午未", "辰巳", "寅卯", "子丑")

    /** 六曜  */
    val LIU_YAO: Array<String> = arrayOf<String>("先胜", "友引", "先负", "佛灭", "大安", "赤口")

    /** 候  */
    val HOU: Array<String> = arrayOf<String>("初候", "二候", "三候")

    /** 物候  */
    val WU_HOU: Array<String> = arrayOf<String>(
        "蚯蚓结",
        "麋角解",
        "水泉动",
        "雁北乡",
        "鹊始巢",
        "雉始雊",
        "鸡始乳",
        "征鸟厉疾",
        "水泽腹坚",
        "东风解冻",
        "蛰虫始振",
        "鱼陟负冰",
        "獭祭鱼",
        "候雁北",
        "草木萌动",
        "桃始华",
        "仓庚鸣",
        "鹰化为鸠",
        "玄鸟至",
        "雷乃发声",
        "始电",
        "桐始华",
        "田鼠化为鴽",
        "虹始见",
        "萍始生",
        "鸣鸠拂奇羽",
        "戴胜降于桑",
        "蝼蝈鸣",
        "蚯蚓出",
        "王瓜生",
        "苦菜秀",
        "靡草死",
        "麦秋至",
        "螳螂生",
        "鵙始鸣",
        "反舌无声",
        "鹿角解",
        "蜩始鸣",
        "半夏生",
        "温风至",
        "蟋蟀居壁",
        "鹰始挚",
        "腐草为萤",
        "土润溽暑",
        "大雨行时",
        "凉风至",
        "白露降",
        "寒蝉鸣",
        "鹰乃祭鸟",
        "天地始肃",
        "禾乃登",
        "鸿雁来",
        "玄鸟归",
        "群鸟养羞",
        "雷始收声",
        "蛰虫坯户",
        "水始涸",
        "鸿雁来宾",
        "雀入大水为蛤",
        "菊有黄花",
        "豺乃祭兽",
        "草木黄落",
        "蛰虫咸俯",
        "水始冰",
        "地始冻",
        "雉入大水为蜃",
        "虹藏不见",
        "天气上升地气下降",
        "闭塞而成冬",
        "鹖鴠不鸣",
        "虎始交",
        "荔挺出"
    )

    /** 天干  */
    val GAN: Array<String> = arrayOf<String>("", "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸")

    /** 喜神方位，《喜神方位歌》：甲己在艮乙庚乾，丙辛坤位喜神安。丁壬只在离宫坐，戊癸原在在巽间。  */
    val POSITION_XI: Array<String> = arrayOf<String>("", "艮", "乾", "坤", "离", "巽", "艮", "乾", "坤", "离", "巽")

    /** 阳贵方位，《阳贵神歌》：甲戊坤艮位，乙己是坤坎，庚辛居离艮，丙丁兑与乾，震巽属何日，壬癸贵神安。  */
    val POSITION_YANG_GUI: Array<String> =
        arrayOf<String>("", "坤", "坤", "兑", "乾", "艮", "坎", "离", "艮", "震", "巽")

    /** 阴贵方位，《阴贵神歌》：甲戊见牛羊，乙己鼠猴乡，丙丁猪鸡位，壬癸蛇兔藏，庚辛逢虎马，此是贵神方。  */
    val POSITION_YIN_GUI: Array<String> =
        arrayOf<String>("", "艮", "坎", "乾", "兑", "坤", "坤", "艮", "离", "巽", "震")

    /** 流派1《福神方位歌》：甲乙东南是福神，丙丁正东是堪宜，戊北己南庚辛坤，壬在乾方癸在西。  */
    val POSITION_FU: Array<String> = arrayOf<String>("", "巽", "巽", "震", "震", "坎", "离", "坤", "坤", "乾", "兑")

    /** 流派2《福神方位歌》：甲己正北是福神，丙辛西北乾宫存，乙庚坤位戊癸艮，丁壬巽上好追寻。  */
    val POSITION_FU_2: Array<String> = arrayOf<String>("", "坎", "坤", "乾", "巽", "艮", "坎", "坤", "乾", "巽", "艮")

    /** 财神方位，《财神方位歌》：甲乙东北是财神，丙丁向在西南寻，戊己正北坐方位，庚辛正东去安身，壬癸原来正南坐，便是财神方位真。  */
    val POSITION_CAI: Array<String> = arrayOf<String>("", "艮", "艮", "坤", "坤", "坎", "坎", "震", "震", "离", "离")

    /** 年太岁方位  */
    val POSITION_TAI_SUI_YEAR: Array<String> =
        arrayOf<String>("坎", "艮", "艮", "震", "巽", "巽", "离", "坤", "坤", "兑", "坎", "坎")

    /** 天干方位  */
    val POSITION_GAN: Array<String> = arrayOf<String>("震", "震", "离", "离", "中", "中", "兑", "兑", "坎", "坎")

    /** 地支方位  */
    val POSITION_ZHI: Array<String> =
        arrayOf<String>("坎", "中", "震", "震", "中", "离", "离", "中", "兑", "兑", "中", "坎")

    /** 逐日胎神方位  */
    val POSITION_TAI_DAY: Array<String> = arrayOf<String>(
        "占门碓 外东南",
        "碓磨厕 外东南",
        "厨灶炉 外正南",
        "仓库门 外正南",
        "房床栖 外正南",
        "占门床 外正南",
        "占碓磨 外正南",
        "厨灶厕 外西南",
        "仓库炉 外西南",
        "房床门 外西南",
        "占门栖 外西南",
        "碓磨床 外西南",
        "厨灶碓 外西南",
        "仓库厕 外正西",
        "房床炉 外正西",
        "占大门 外正西",
        "碓磨栖 外正西",
        "厨灶床 外正西",
        "仓库碓 外西北",
        "房床厕 外西北",
        "占门炉 外西北",
        "碓磨门 外西北",
        "厨灶栖 外西北",
        "仓库床 外西北",
        "房床碓 外正北",
        "占门厕 外正北",
        "碓磨炉 外正北",
        "厨灶门 外正北",
        "仓库栖 外正北",
        "占房床 房内北",
        "占门碓 房内北",
        "碓磨厕 房内北",
        "厨灶炉 房内北",
        "仓库门 房内北",
        "房床栖 房内中",
        "占门床 房内中",
        "占碓磨 房内南",
        "厨灶厕 房内南",
        "仓库炉 房内南",
        "房床门 房内西",
        "占门栖 房内东",
        "碓磨床 房内东",
        "厨灶碓 房内东",
        "仓库厕 房内东",
        "房床炉 房内中",
        "占大门 外东北",
        "碓磨栖 外东北",
        "厨灶床 外东北",
        "仓库碓 外东北",
        "房床厕 外东北",
        "占门炉 外东北",
        "碓磨门 外正东",
        "厨灶栖 外正东",
        "仓库床 外正东",
        "房床碓 外正东",
        "占门厕 外正东",
        "碓磨炉 外东南",
        "厨灶门 外东南",
        "仓库栖 外东南",
        "占房床 外东南"
    )

    /** 逐月胎神方位  */
    val POSITION_TAI_MONTH: Array<String> = arrayOf<String>(
        "占房床",
        "占户窗",
        "占门堂",
        "占厨灶",
        "占房床",
        "占床仓",
        "占碓磨",
        "占厕户",
        "占门房",
        "占房床",
        "占灶炉",
        "占房床"
    )

    /** 地支  */
    val ZHI: Array<String> =
        arrayOf<String>("", "子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥")

    /** 六十甲子  */
    val JIA_ZI: Array<String> = arrayOf<String>(
        "甲子",
        "乙丑",
        "丙寅",
        "丁卯",
        "戊辰",
        "己巳",
        "庚午",
        "辛未",
        "壬申",
        "癸酉",
        "甲戌",
        "乙亥",
        "丙子",
        "丁丑",
        "戊寅",
        "己卯",
        "庚辰",
        "辛巳",
        "壬午",
        "癸未",
        "甲申",
        "乙酉",
        "丙戌",
        "丁亥",
        "戊子",
        "己丑",
        "庚寅",
        "辛卯",
        "壬辰",
        "癸巳",
        "甲午",
        "乙未",
        "丙申",
        "丁酉",
        "戊戌",
        "己亥",
        "庚子",
        "辛丑",
        "壬寅",
        "癸卯",
        "甲辰",
        "乙巳",
        "丙午",
        "丁未",
        "戊申",
        "己酉",
        "庚戌",
        "辛亥",
        "壬子",
        "癸丑",
        "甲寅",
        "乙卯",
        "丙辰",
        "丁巳",
        "戊午",
        "己未",
        "庚申",
        "辛酉",
        "壬戌",
        "癸亥"
    )

    /** 十二值星  */
    val ZHI_XING: Array<String> =
        arrayOf<String>("", "建", "除", "满", "平", "定", "执", "破", "危", "成", "收", "开", "闭")

    /** 十二天神  */
    val TIAN_SHEN: Array<String> = arrayOf<String>(
        "",
        "青龙",
        "明堂",
        "天刑",
        "朱雀",
        "金匮",
        "天德",
        "白虎",
        "玉堂",
        "天牢",
        "玄武",
        "司命",
        "勾陈"
    )

    /** 宜忌  */
    private val YI_JI = arrayOf<String>(
        "祭祀",
        "祈福",
        "求嗣",
        "开光",
        "塑绘",
        "齐醮",
        "斋醮",
        "沐浴",
        "酬神",
        "造庙",
        "祀灶",
        "焚香",
        "谢土",
        "出火",
        "雕刻",
        "嫁娶",
        "订婚",
        "纳采",
        "问名",
        "纳婿",
        "归宁",
        "安床",
        "合帐",
        "冠笄",
        "订盟",
        "进人口",
        "裁衣",
        "挽面",
        "开容",
        "修坟",
        "启钻",
        "破土",
        "安葬",
        "立碑",
        "成服",
        "除服",
        "开生坟",
        "合寿木",
        "入殓",
        "移柩",
        "普渡",
        "入宅",
        "安香",
        "安门",
        "修造",
        "起基",
        "动土",
        "上梁",
        "竖柱",
        "开井开池",
        "作陂放水",
        "拆卸",
        "破屋",
        "坏垣",
        "补垣",
        "伐木做梁",
        "作灶",
        "解除",
        "开柱眼",
        "穿屏扇架",
        "盖屋合脊",
        "开厕",
        "造仓",
        "塞穴",
        "平治道涂",
        "造桥",
        "作厕",
        "筑堤",
        "开池",
        "伐木",
        "开渠",
        "掘井",
        "扫舍",
        "放水",
        "造屋",
        "合脊",
        "造畜稠",
        "修门",
        "定磉",
        "作梁",
        "修饰垣墙",
        "架马",
        "开市",
        "挂匾",
        "纳财",
        "求财",
        "开仓",
        "买车",
        "置产",
        "雇佣",
        "出货财",
        "安机械",
        "造车器",
        "经络",
        "酝酿",
        "作染",
        "鼓铸",
        "造船",
        "割蜜",
        "栽种",
        "取渔",
        "结网",
        "牧养",
        "安碓磑",
        "习艺",
        "入学",
        "理发",
        "探病",
        "见贵",
        "乘船",
        "渡水",
        "针灸",
        "出行",
        "移徙",
        "分居",
        "剃头",
        "整手足甲",
        "纳畜",
        "捕捉",
        "畋猎",
        "教牛马",
        "会亲友",
        "赴任",
        "求医",
        "治病",
        "词讼",
        "起基动土",
        "破屋坏垣",
        "盖屋",
        "造仓库",
        "立券交易",
        "交易",
        "立券",
        "安机",
        "会友",
        "求医疗病",
        "诸事不宜",
        "馀事勿取",
        "行丧",
        "断蚁",
        "归岫",
        "无"
    )

    /** 每日宜忌数据  */
    const val DAY_YI_JI: String =
        "30=192531010D:838454151A4C200C1E23221D212726,030F522E1F;00=2430000C18:8319000776262322200C1E1D,06292C2E1F;04=32020E1A26:7917155B0001025D,0F522E3820;1D=162E3A0A22:790F181113332C2E2D302F1554,70012038;10=0E1A263202:79026A17657603,522E201F;05=0D19250131:7911192C2E302F00030401060F1571292A75,707C2052;2F=0C18243000:4F2C2E2B383F443D433663,0F01478A2015;1D=0E1A320226:3840,0001202B89;2F=14202C3808:3807504089,88;29=0E1A263202:383940,6370018A75202B454F66;05=32020E1A26:38394089,0001202B;22=16223A0A2E:384C,8A20;20=2B3707131F:2C2E5B000739337C38802D44484C2425201F1E272621,52297015;35=121E2A3606:2C2E2D2B156343364C,0F4729710D708A20036A19;04=0D19250131:5040262789,0F712903;3B=202C380814:5040000738,0F7D7C584F012063452B;35=1A2632020E:50400089,88;13=1A2632020E:69687011180F791966762627201E,0352292E80;34=182430000C:291503000D332E53261F2075,0F5238584F45;0B=000C182430:297170192C2E2D2F2B3E363F4C,0F52156320010347;0B=131F2B3707:297115030102195283840D332C2E,0F1F5863201D8A;02=222E3A0A16:261F1E20232289,52290058363F;32=16222E3A0A:261F201E232289,8D;39=0D19310125:262322271E201D21,52450F4F;09=0D19253101:262322271E202189,1F45;26=16222E3A0A:262322271F1E20,7129;06=0F1B273303:17262322274050,80387C6B;2C=0915212D39:1707702C2E71291F20,0F52000106111D;15=16222E3A0A:170007386A7448363F261F1E,030F79636F20;26=030F1B2733:1784832C2E5B26201F,0F010D29;13=182430000C:175447440D15838477656A49,2B2E1F8A2022;28=101C283404:70504C7889,88;03=0D19250131:700F181126151E20001A7919,8D;2F=0915212D39:705283845B0D2F71,0F202E41;06=3606121E2A:70786289,06802E1F;23=1824000C30:70076A363F,2920;17=202C380814:700718111A302F717566,0F2B2E20;26=3B0B17232F:70545283842E71291A7933192A5D5A5040,090C384F45208A1D6B;38=212D390915:7039170F45513A2C2E7129242526271F201D,0001035215;3A=15212D3909:703911170E2C2E2D2F4B15712952633D,092B8A20;27=010D192531:702D155483840F63262720,53292F017D4F38442B2E1F47;17=16222E3A0A:705C4C39171A4F0E7971295B5248,0F2E1F1D;37=1A2632020E:2E260F27201F,523815292F1A;22=0E1A260232:64262322271F2021,0F2F2938;22=2F3B0B1723:161A0F1526271F4C,5861034738;18=2430000C18:161A7889,292E1F0F3861;31=17232F3B0B:04795B3F651A5D,0F52010620;16=14202C3808:04170F79195D1A637566363F76,01522E8A20;39=132B37071F:0470170F191A134C8384662426232227201E,8D;08=0D19253101:040370181123220F1326271E2021,2915;3B=0D19310125:040307177938494C,0F262070;17=0E2632021A:0403010218111A17332C2E2D2B15713E6575,4538206429;1D=142C380820:04033918110F0D2C2E7129332D2B72528384547566,8D;1C=1830000C24:040318111A17332C15290D200C7A,47450638;35=0F2733031B:040318111A16175B795452848315302F6563395D,38702920;2E=14202C3808:04031975363F6366,0F5401202C5283842E2F;1E=0E1A320226:0403080618111A16332E2F152A09537919702C5445490D75072B,80632038;20=182430000C:04067033392C7161262322271E1D210C,8D;2F=101C283404:3F4889,88;1C=2733030F1B:3F74397677658988,0F384720;1D=293505111D:3F8B657789,0F2029702E7D;35=111D293505:3F8B6589,1F20;0A=020E1A2632:3F656477,0F2B712920;05=111D290535:3F6589,88;10=0F1B273303:3F88,2B38200F;1C=293505111D:0F83843D363F776424,15462F2C52032971;2A=0F1B273303:0F17795B54838458,52807C38;11=121E2A3606:0F172C2E387129363F7566512D4E4461,0103475220;3A=172F3B0B23:0F171511793F76584C,0347200C1D;20=2D39091521:0F175B3975660745514F2B4825201E211D,010352292E;2E=0F1B273303:0F170070792C2E261F,0403412322;28=05111D2935:0F1700707129385C363F3D1F1E232226,80412B202F;14=14202C3808:0F17000728705448757A,522E1F15562F;05=30000C1824:0F17000102061979454F3A15477677,241F8A20;21=2F3B0B1723:0F17000102060370392E52838453331F,452F2C266A79292B2038;10=0C18243000:0F170001020E032A70692C2E302F802D2B0D7129474C201F2322,5211183809615D;34=1A2632020E:0F171170792F5B1566770001032C2B802D,29387C2071;34=14202C3808:0F0D33000103452E528384297115752620,63386F70;14=15212D3909:0F7045332C2E71201F1D21,47011552295303;27=101C283404:0F70161715232238838426271F20,7D0352;19=121E2A3606:0F705B0004037C5D15653F1F26,522B4738;09=131F2B0737:0F705215261E20,012E1F;25=182430000C:0F707B7C00012F75,5220;1B=2531010D19:0F706A151E201D528384544466,47010C2E292F2C38;20=14202C3808:0F707500261E20,382E1F;05=3606121E2A:0F161A17452F0D33712C2E2B5443633F,150170208A03;27=0E1A263202:0F150370002E0D3979528384532971331F1E20,477D;0D=06121E2A36:0F5B8370000102060403161A494447,386A418A20;1A=17232F3B0B:0F03700D332C2E2971152F52838463,01004547380C;26=101C283404:0F03700D33195284835329711563,01260038206B;0E=131F2B3707:0F03706A4F0D332C528384532E29711563,450075;0F=131F2B3707:0F0370010239332E2C19528384532971156375262720,8D;18=17232F3B0B:0F0370390D332C192E2971637547202322,5815;28=0E1A263202:0F0302791566046F,29710D722A38528384202E45;30=0E1A263202:0F030102392E15634447001F1E,293845200D7075;38=1E2A360612:0F0300017039712952542D2C302F80380D2A363F3349483E616320,1118150C1F2E;20=33030F1B27:0F03000102700D29713963451F0C20,528338542F158061;28=121E2A3606:0F030001027039452971150D332C2F6327,20528384;03=2C38081420:0F030001022A0D3945297115528384637020,476A382E1F44;26=010D192531:0F03390D332C1929711563261D2E2322,382000521118750C706B;15=131F2B3707:0F033915666A52261E272048,382E2F6329712C01;14=0D19253101:0F52838403700D332C29712E1F27201E2322,15450175;05=131F2B3707:0F528400012E7129,0920;26=3707131F2B:0F528471295B795D2B155333565A446375661F201E272621,00016B0C41;13=14202C3808:0F280001363F8B4326232220,2E1F47032F7D;35=16222E3A0A:0F0211195465756679,2F384570202B6A;10=15212D3909:0F0102700D332C2E2F0319528384531529716345261F2322,8D;32=101C283404:0F0102037039330D5284832971152E1F0C,0026206B;37=16222E3A0A:0F003854,20521D21;06=020E1A2632:0F00175058,5D6B80382E;16=1B2733030F:0F00701784831952712C2E1526271F,03380620;1F=2B3707131F:0F00701A17830E544C5C78,7129632E1F38208A452F;16=15212D3909:0F00040370396A742E15444948,458A384F20;21=16222E3A0A:0F005B261F20,2E2F;1D=2531010D19:0F0003450D3329712C2E2F1575,528A63705A20587D7C;12=17232F3B0B:0F00030D70332C2E3952838453542971156375,6B20;19=1B2733030F:0F000301020D297115332E1F0C,16522026;2E=121E2A3606:0F00030102700D332E2C192971155383846375261F1E20,8D;1F=33030F1B27:0F00030102700D19297115332C2B535448,2E45208A;00=2632020E1A:0F00030102705283842E544779,2920454F754C38;36=16222E3A0A:0F0052037029710D332C15,7545584F8A201D21;21=121E2A3606:0F00074850,8A20;36=0D25310119:0F00071A706A717677492923221E202726,80522E1F;39=1E2A360612:0F006A385040740717,1F7063;1E=212D390915:0F006A1938271779,565A4575522F801F1E63;2B=121E2A3606:0F00010D0302703352838453297115632E,208A454F;2B=0E1A263202:0F000170390D332E2971152F63751F1E20,52846A38;1F=14202C3808:0F000106387129,2E1F;24=14202C3808:0F0001062E7129,5220;10=0814202C38:0F0001062871292E7C528384032C5C2A15767765,11185D8A206B;08=131F2B0737:0F0001067C1F20,5229;00=202C380814:0F0001020D700339332C192A83842971152E1F0C20262322,0652563861;10=111D293505:0F000102700D332C2E297115383F631F20,034756;2B=14202C3808:0F000102700D332C712E15261F201E,80036A614738;31=0C18243000:0F000102700D335283845329711563,38048A7D4520;2A=14202C3808:0F000102702E15471F1E,294F2B452C2F2680;11=0D19253101:0F0001022E792D3E75663D19,472063703852292B;39=222E3A0A16:0F0001022E154826271F1E203874362322,0363;12=0D19253101:0F000102032971152C2E19,4720637038522B;15=111D293505:0F000102030D70332E3919528384532971152B2F201F0C,8D;1B=232F3B0B17:0F000102030D7033528384534529711520,634758;14=131F2B3707:0F000102030D332C2E195283845329716375261E2322,8D;19=15212D3909:0F00010203700D332C2E1929711552838453637526202322,8D;09=111D293505:0F00010203700D332E2F192971152B52838453631F20,8D;33=1A2632020E:0F00010203700D332E2F1929711552838453261F201E2322,8D;03=2E3A0A1622:0F0001020370332C2E2F1575261F,2971476A45835238;0C=111D293505:0F0001020370332E2F0D19297115637566302B2C3979,8D;08=000C182430:0F000102037039297175261F1D21,454F2E156341;0F=17232F3B0B:0F0001020370390D3319297115632E2C752620212322,8D;07=3606121E2A:0F0001020370390D332C1929712E157563548384534C,20248A;38=16222E3A0A:0F0001020370390D1952838453542971631F0C,1520;36=14202C3808:0F00010203703915632719792322,8026204529715875;0F=111D293505:0F00010203528384157033,752971206B452F2B262E;05=3404101C28:0F00010206030D7129302F79802D7C2B5C4744,11701D20528438;33=111D293505:0F00010206181139702E1F686F6A792D2C304E153375664923221D21,52296B0D80;0D=15212D3909:0F000102070D70332C2E19528384297115637526201E2322,8D;05=2C38081420:0F0001021A175D2C19152E302F7183846379,8A20704F754541;0A=131F2B3707:0F001A651707,565A58202E1F4763;20=121E36062A:0F11707B7C5271291E20,2E1F;39=111D293505:0F11700001522E71291F20,2B;07=131F2B0737:0F11700001397129,2E20;02=111D293505:0F11707129,2E1F20;02=131F37072B:0F1152702E2F71291F20,0001;03=131F37072B:0F1152702E2F71291F20,7A;3A=111D293505:0F117B7C2C2E71291F20,5203;00=111D350529:0F110001702E2F71291F20,06;21=101C280434:0F11000170717B,522E1F;0A=06121E2A36:0F110001708471292E1F20,0338805156;1C=121E2A3606:0F1100017B7C702E7129,522B;22=2D39091521:0F110039702C2E522F1574487B7C2D4E804B,098A20453861;2B=05111D2935:0F1118795B65170002195D,52382E8A20;1E=2531010D19:0F111829711500010370390D332E750C201F,4552832F382B80;04=2A3606121E:0F1118175C000301027039450D29332C2E2F15631F,8A5820;20=31010D1925:0F1118032A0D545283841A802D2C2E2B71296366774744201F26232221,010900150C;06=2C38081420:0F11180300706A2E1549466319,292F26806B382B207545;06=2E3A0A1622:0F1118528384530001035C702971152B332C2E63201F1E23222621,6B75452D4F80;2E=111D293505:0F1118060300017B7C792E39767566261F20,71298051;36=232F3B0B17:0F111800171A454F514E3A3871157765443D23221E262720,80612E1F;1C=212D390915:0F11180003706A4F0D332C2E192971155363751F20262322,5247464161;28=3B0B17232F:0F111800037039450D2971332C632026,1F2E2B385283;27=3B0B17232F:0F11180006032A0D70332E011954838471152C202322,58477D63;0C=0814202C38:0F1118000106287129705B032C2E302F802D4E2B201F,5284583841;08=380814202C:0F11180001027039302971542F7526201E,63472E151F58;3A=1E2A360612:0F1118000102030D70332C2E192971158384535426201E2322,471F;1B=1F2B370713:0F1118000102030D70332C2E195283845329711563261F0C20,47457525;22=3505111D29:0F1118000102030D70332E2C192971153953631F0C262720,52846125;28=390915212D:0F111800010203700D332C2E192971152F4B49471F270C2322,52562B20;29=390915212D:0F111800010203391929710D1552838453,2075708A45630941;0F=0A16222E3A:0F111800010206032A0D097170292D302F1575761320,521F4725;1D=1F2B370713:0F18000102111A1703154F2C2E382D2F807566,7163708A1F207D;2A=05111D2935:0F111800017C5C2C2E7129,5270153820;21=2B3707131F:0F11185C0370332D152322528384636626271E,2F292C2E1F000106;01=2430000C18:0F11185C0001092A0D7014692983847B7C2C2E302F802D2B,06454F208A;2E=0D19253101:0F11181200171A7919547638,5215201D;09=3A0A16222E:0F1A1716007015713F261F2720,5263587D2B4703;04=111D293505:0F1A0070153871291F20,7A76;29=010D192531:0F181179005B712980152D4E2A0D533358,5270208A;11=0814202C38:0F181138171A7975665B52845415,47701F8A20;13=121E2A3606:0F181117795B5C007054292A0D690403332D2C2E66632B3D,8A454F38;22=121E2A3606:0F1811705200012E71291F20,38;2A=16222E0A3A:0F1811705200012E71291F20,062B;27=14202C0838:0F18117052000171291E20,2E1F;27=16222E0A3A:0F18117000012E71291F20,527A;06=111D290535:0F1811700001062E2F1F20,7129;12=14202C3808:0F181100062839707952542C2E302F03565A7566441F1E,0D29802B20;29=1824300C00:0F181100012C2E7129,5220;25=121E2A0636:0F18110001261F20,0352;2E=0915212D39:0F18110001702C2E7129,6F454F098A20;25=030F1B2733:0F18110001702C2E71291F0D2B152F2127,52831620;14=16222E3A0A:0F18110001707B7C0D7129,52565A152B20;34=17232F3B0B:0F1811000104037115454F7677657B7C392023222726210C,52092E1F;27=3707131F2B:0F181100010603797B7C802D302F2B6743441F202322,2952477D25;28=14202C0838:0F181100017B7C2E71291F20,036F;33=0D19253101:0F18110001027939706954528384685D15565A75201E1D26,29032E;11=182430000C:0F1811000102062A0D2C2D804B2B672E2F7129,70471F8A20;30=17232F3B0B:0F5C707971292C2E0E032A0D6A804B2D8C2B3348634C,521109154620;31=15212D3909:0F5C5B0001032A0D7052842C2E71291F20,1118517D46;2B=0F1B273303:0F5C111800015B712952841F20,756A25;1A=2733030F1B:1545332C2E2F84836375662620,0F0003700D71292B;1C=0E1A320226:1516291211020056,063820;07=000C182430:1551000403706A454F3A3D771F262322271E1D21,382B415220;16=17232F3B0B:1500443626271F1E,29710F47380D195203;37=182430000C:150001021745512E443D65262322,2B63387C;18=192531010D:151A83842627202322,580F7003632E1F297C;26=0E1A263202:15391A302F83845475662627201E,0F702E46290047;08=3606121E2A:5B000102073911522C302F3A678C363F33490D482425200C1E2322,0F15382E1F61;16=1E2A360612:5B71297000010611182A0D39792C2E332D4E80151F202621,52454F38;04=2C38081420:5B11180001020328700D332C2E195283847115632F751F2720,290F4766;30=0C18243000:201E27262322,89;02=3404101C28:2A0D11180F52848353037039156358332C2E,38200026;28=010D192531:4089,030F565A61206B;27=1824300C00:4089,88;36=1C28340410:0370833F0F6A5215,010D582E1F202C2F29;38=112935051D:03700F,79192C2E2D715275262322271F201D21;36=112935051D:0370110F45510D3371290941614C522623222720,8D;3B=152D390921:03047039171A533852443D363F,8D;11=0F1B273303:030402111A16175B4F3A2B153E0079015D54528483696A51,7006200F;05=0F1B270333:03041A174533302F56795B3E808339528454,700F2920;26=121E2A3606:037B7C2E2F261F20,0F;14=1E2A360612:030270170F45513A2C71295283842A0D532D24252623222720,155A382E1F;2F=1B2733030F:03027011170D332D2C2E2F716152838454,010F201F;2C=121E2A3606:03027039450D332C2F2D2971528384636626202322,5815;35=212D390915:03020E0F18110D332C2E2D2F4971293E615244756653,8A2025;31=1B2733030F:030102703945802D2C512B7129092322270C7566,112E5283;25=2D39091521:030102062C2E543E3D636679,380D1946297100;1F=293505111D:03111A171538193E3F,0F632C2E70454F200C;19=17232F3B0B:031A2B7915656A,0F177001204529710D632E2F;02=32020E1A26:033945302F838475262720,297071000F2E1F38;10=17232F3B0B:0339332C2E1575201E26,0F520D631F29712A724738;26=390915212D:0339332C2E302B66201D1F27,0D2971010015520F6B;0E=15212D3909:03392D2E332F211D201F1E27,0F7015380029710D1958;24=16223A0A2E:036F791E20,522E1F;31=1D29350511:5283845B79037B7C802D2C2E4E302F2B38493D4463664C1F2021,0F0D7129;17=15212D3909:5283845303702971150D2F,388A6A6D0F20;12=111D293505:528384530370331929272E2B2F631F1D20,0F156B38;0E=0D19253101:528384530339454F0D297115332E2F637520,0F007058;02=2A3606121E:528384530339332E152C2F58631F20,380D000F29;00=283404101C:528384530003010215392C20,1112180F29560D2E1F7545;11=15212D3909:5283845300031929150D332C2E63,0F217045208A7175;21=3505111D29:5283845300010670802D2C2E4E155B201F1E232221,380F71296A;0E=17232F3B0B:5283845354037029711575262720,631F58000F2E3801;0D=111D293505:528384000103451915332C2E631F2720,29716A0D0F70;19=1D29350511:5283840001032E1570637566302F391F,0F47297120;30=16222E3A0A:5283845479036A2627201E,0F380D70297115012F;1A=1F2B370713:528384542E03700F111869565A7566631F1E2021,297138000C;31=121E2A3606:52838454443D65002C2E15495D1F,0F417D712B3863;0F=0D19253101:5283845444360F11756415,2C2F29016B472E2B2038;1D=212D390915:528384545363000103332E15,0F1F197029710D757D20;32=121E2A3606:528384546315332C2E2F26201F2322,0F0D45002971756B;17=192531010D:52838454754C2971150301022E,0F63206A0938268A41;17=1B2733030F:52848353000103297115332E2F19,0F8A514F6A66207545;26=1824300C00:528403395B2F1E20,0F01;2D=0B17232F3B:5254700001020612692D4E584647336375662E1F1E,71290D2620;37=131F2B3707:525400045B17791A565D754C7866,2E1F207C;34=0F2733031B:483F89,88;38=232F3B0B17:767779392623222789,152B1F1D20;0E=0A16222E3A:767789,5283002920;25=14202C3808:7665261F20,0F29;1A=222E3A0A16:7665262322271F201E21,0F00298071;24=1824000C30:7889,292E1F;24=101C283404:8D,88;32=1D29350511:63767789,522E0006206B;31=131F2B3707:7B7C343589,0F70;38=2632020E1A:7B7C343589,520F;20=0E1A260232:7B34,88;12=1C28340410:02703918110F7919155283756626232227201E,012C2E1F0C;29=121E2A3606:020F11161A17454F2C2E2D302F2B38434C,20700163;28=1824300C00:02060418110D332C2E415B637566262322271F20,520F;23=142038082C:07504089,0F01;0C=15212D3909:07262723221F40,0F712952;3B=2430000C18:0717363F1A2C4F3A67433D8B,71290F010347;1A=2531010D19:0704031118528384542D2E4E49201F1E1D2127,292B000C;3B=283404101C:073F7765644889,0120;14=111D293505:074048261F202322,0F71454F15000180;08=111D293505:07404826271F1E2089,88;2C=0D19253101:07565A5283845463756677261F20,010F152961;20=2F3B0B1723:07487677393F89,0F2952151F1D;30=111D293505:074889,06520F38;08=17232F3B0B:074889,88;3B=131F2B3707:074889,88;32=15212D3909:07762623221F1E20,000F1552296B2F;2A=0D19253101:0776776A742623221F200C211D1E,11180F2F5206802B;0B=04101C2834:0776776564,000F293820;11=101C283404:0706397B7C794C636A48,520F71294720;26=14202C3808:077C343589,88;0A=380814202C:076A79040363660F5D363F,52292E1F20382F155601;23=16223A0A2E:076A696819,0F29;18=222E3A0A16:076A171552847983546578,712970010F;2D=182430000C:076A48,45752F29384C0F204F612B;30=131F2B3707:076A7626271F1E20,0D0F29382F2E;0E=0814202C38:07343589,0652;38=1C28340410:070039201F0C2789,06030F292F;23=101C280434:076564,0F2920;02=0D19253101:073918111A17332C2E71292322271F1E20481D45548384,38002F70;2A=1824300C00:7C343589,88;01=172F3B0B23:6A79363F65,0F292B71;18=1B2733030F:6A170F19,5845754C201F4F3824;30=1B2733030F:6A170F1963766F,5452201F;32=0C18243000:6A0339332C20528384531563,29713801000F0C47806B;3B=2A3606121E:77766564000789,0F52201E8A;01=202C380814:1F2027260076232289,0F295283;39=0F1B330327:3435,88;09=0F1B273303:34357B7C,88;18=121E2A3606:34357B7C7789,0F29;1D=232F3B0B17:34357B7C89,0F20;21=33030F1B27:34357B7C89,030F;27=390915212D:34357B7C89,7129;17=1D29350511:3435073989,88;02=2C38081420:34357C89,0111180F2920;06=30000C1824:34357C89,7129;1A=14202C3808:34357C89,8A20;36=182430000C:3435000789,88;35=232F3B0B17:34350089,0F20;25=3707131F2B:34353989,0F20;37=0D25310119:343589,0F5220;2D=0F1B273303:343589,0F715229;0D=131F2B3707:343589,88;30=121E2A3606:343589,88;1C=16222E3A0A:343589,88;19=131F2B3707:343589,88;0F=15212D3909:343589,88;32=14202C3808:343589,88;13=0D19253101:343589,88;11=17232F3B0B:343589,88;1E=142C380820:017018110F1A2E15495247838463462322271F,8D;03=0F1B270333:0103040818111A155284262322271E20217A79708330,38472E63;1B=14202C3808:010670170F0E3A294152838454262322271F201E,2E181544;2C=0F1B273303:01067071292C2E1F20,1103150F52;0A=17232F0B3B:010670181126271F202165,2938;16=182430000C:0106111839513A2C2E2D2F8C804B4723221F63,71522920;37=0F2733031B:010203040618110F3315292A271D200C6339171A712C2E30491E21,7A;21=0E1A260232:010206040318110F2E292A27200C70072C302F541F392B49,3815;12=1A2632020E:010206110F452C2E7129095B5226232227201F0C,58804B036B2B38;1C=142C380820:01023918112E2D493E52756624262322271F20,8D;12=121E2A3606:008354,06462F2E1F;27=030F1B2733:00797084831754,0F2E472D4E1F;06=0D19250131:0079701811072C2E01060F33152627200C7A1A302F4576631F2B,80523829;00=172F3B0B23:00790F072C2E0103047018111A262322271E7A302F5448637545,29381556;1E=101C340428:007952151E20,0F2E1F;33=0F1B273303:007984831A160F1719,632E20471D6B;01=152D390921:0079110F0304062A528423222627207A19701A2C2E2F5D83,2945;13=0F1B273303:0079181A165B332F2B262322271E2021030469702D4E49712930845D,454F;05=152139092D:0079192E2F030417332D1552847A5D,4E20;1F=162E3A0A22:003826232277,632E2052;3A=0D19310125:0038262389,5215;13=1C28340410:00384089,0F202E157C;07=04101C2834:00384089,15296763;1F=101C283404:00384740,0F20;37=1C28340410:00387765504089,0F157C;04=131F37072B:00385476,521F;13=16222E3A0A:003854767789,2E1F5220;10=131F2B3707:003854637519,205D1D1F52151E21;0F=121E2A3606:003889,52201F1D47;33=121E2A3606:003889,88;1F=212D390915:001D23221E2789,52290F2E1F20;2B=07131F2B37:002C7080305C784C62,2E1F4720;01=283404101C:004D64547589,0F29;2E=131F2B3707:005040,522E1F0F2C20;04=3404101C28:005089,032C2E1F;33=182430000C:005089,88;15=192531010D:00261F23221E201D2189,8D;12=131F2B3707:00261F2322271E200C89,8D;1E=121E2A3606:0026271E20,2F2E1F;33=16222E3A0A:002627241F1E20232289,8D;33=14202C3808:002627651E20232289,88;1B=182430000C:00262789,292C2E1F2B2F;2A=07131F2B37:00262322271F1E203F8B65,52290F0380;02=15212D3909:001779332D2322271E2007760304,38290F;1C=1F2B370713:00173883546365756619,466115201F701D475224;34=0D25310119:00170F79191A6540,712909387C20;15=0E1A263202:00170F332C2E2D2F802952443F26232227201F,15637C38;3A=132B37071F:00170F7665776489,8D;2A=390915212D:00177689,0F52804F25;07=2E3A0A1622:00177179546A76,0F52443D1F;2D=0915212D39:0070,0F292C2E791F;13=131F2B3707:007083624C,0F38202E7D4F45471F71;07=380814202C:00704F0D332C2E2D15363F261F20274C,0F2906036F47;03=3404101C28:00702C2E164C157126271F1E202425363F,29386A032B;0F=0F1B273303:00700F1715262720,472E3863;09=15212D0939:007022230726,2E17712952302F;15=15212D3909:00704889,88;34=1C28340410:0070784889,0345201F;21=2D39091521:007007482089,2E1F5847;0B=0D19253101:0070071A010618110F5B52846775,632620;2E=16222E3A0A:00701A17794C0F302F715475,2E454F8A2024;3A=0F1B330327:007018111A1617192E15382627201F656477,4F09;0A=0F1B273303:002E2F18110F5B3315292A26271F20210C7A70710102393E19,035A;37=14202C3808:002E4344793F26271F20,03702C2F292B381A;31=0E1A263202:00161A5D454F153826201E27,7D0D29;04=152139092D:0004037039180F332D152952262322271F0C533A83,41178047;35=1F2B370713:0004037B7C0F79494766754667,80293869208A;1E=162E3A0A22:00040301067018111A0F332C15292A261E200C7A7919712F5D52838454,5617454F;06=3404101C28:000403110F527079156523221E2027,0129802E1F6B;1D=1830000C24:0004031A170F11332C2E302F1571292A657677451949,70201D52;18=102834041C:0004031811171A5B332C2E155D52,0D292045;04=17233B0B2F:00040318110F1519262322271E2021,52831F38;25=3B0B17232F:00046A7966444C7765,010C202F38520F70292E;31=14202C3808:003F261F202789,88;36=131F2B3707:003F657789,7152290F032B;3A=2632020E1A:003F651F0C2027232289,0F29;2B=16222E3A0A:003F89,88;36=212D390915:000F76,032E1F522C292B;22=2B3707131F:000F7765,2E1F7C46;07=0F1B273303:000F01111A1615292A2627200C2C670279538384543E49,6345;12=0F1B273303:000F1320,63803829;36=0F2733031B:000F1323222627,2E38290315;35=0D25310119:00676589,0F20;0F=0C18243000:00401D232289,71290F4720;2B=101C283404:0040395089,88;03=30000C1824:004023222089,0F29111847;0D=0A16222E3A:004089,0F52;11=1A2632020E:004089,0F014720;0B=3A0A16222E:00037039454F0D332971152C4C48,090F476341382E;0A=111D293505:00037039041A26271F1E202322,0F2F2C335129452E0D3A;3B=222E3A0A16:000370396A450D332F4B154C,0F208A7D41381F2E;14=0F1B273303:00030401061A16170F332E71292627200C02696A45514F0D2C2D4E497A,2B;0B=0F1B273303:000304111A33152D2E302F71292A5284530770022B,0F634520;3B=0F1B330327:00030418111617332E2D2F292A52845407020D302B,090F4520;01=0F1B273303:000304080618110F1A2E2D0D3371292A2C302F7566010239454E802B,6320;39=2430000C18:00036A7415384878,45751F20240F522E834F;2E=182430000C:000301394F2E154763751F27,0F707A802629710D1920;35=14202C3808:0003391983845475,2E1F0F6A702971722A0D;04=0F1B270333:00483F,6338200F;2A=3B0B17232F:00481F2023221E27262189,0F292C2E;1B=122A36061E:0076645089,88;19=202C380814:0076777566262322271F201E,0F11185229;0D=101C283404:00763989,0F20;36=1E2A360612:00788B89,0671292E;25=010D192531:00784C793989,0F29702E1F208A;21=31010D1925:0006261F1E201D212322,0F29381118;01=2A3606121E:00060403702C2E4C154947443D651F,0D29;20=101C283404:0006522E261F20,0F7129;39=2632020E1A:00060724232227261F2025,520F157929382F;22=31010D1925:0006547677,0F5229151F20;1B=0E1A320226:00061A161718110F292A0C26271F21797001022F49,47;0D=0814202C38:002876396577261F20,5283290F;37=212D390915:0028397976771E232227,0F522E474420;27=121E2A3606:006389,88;22=101C280434:007B7C3989,88;1E=1830000C24:007B343589,88;05=2E3A0A1622:00021719792B155D5466774962,010611180F2920;30=14202C3808:00020370454F0D3933192C2E2D156375261F202322,0F71;23=0E1A260232:0002070818111A16175B153E445D5452848365647576,2038454F;15=182430000C:0007385476771548,52061F20;24=2D39091521:0007504089,0F291570;30=15212D3909:0007504089,060F71702F29;18=15212D3909:0007504089,88;0B=17232F0B3B:000770171989,0F2E2038;2F=0B17232F3B:00077089,522E1F8A20;2C=07131F2B37:000704036939487C4466,0F70112938;21=1824000C30:000715547776,521F;18=0E2632021A:0007030401021811171A0F2E2322271F1E706749528483,202F2938;00=0F1B330327:00077663,0F29713820;2C=0B17232F3B:000776776548,0F1118152E1F20;17=121E2A3606:00077665776489,52830F208A;14=1A2632020E:00077B7C4834353989,295220;3B=2632020E1A:00076A386563,0F7D8A2066454F52754C;15=1E2A360612:00076A0F3874485040,06707C25;09=3606121E2A:00076A74504089,5229702C7D;15=14202C3808:00076A74173926271F1E20,0F7029522B;09=000C182430:00076A54196348767765,7920297115528A0D382B;16=101C283404:000734357B7C3989,0F52832920;0C=06121E2A36:0007343589,290F71;04=2E3A0A1622:0007343589,0F292F7020;12=182430000C:0007343589,0F71296B7080;03=15212D3909:0007343589,71297063;00=0D19310125:0007010618111A332D302F15262322271E530270164C,560F7129;24=0E1A263202:000701020618111A1752848354230C7027,26203829;2C=111D293505:0007711F204840,010F291538;14=17232F3B0B:00076527262322,1552835A201D0F38;2D=0D19253101:0007363F8B3989,09292C208A0F;28=030F1B2733:000739483F66,0F208A2B;0A=04101C2834:0007397B7C343589,01065220;08=020E1A2632:0007396A48343589,0F20;3A=283404101C:00073934357B7C89,0F52;23=3505111D29:000739343589,0320;10=0A16222E3A:000739343589,520F;2F=111D293505:000739343589,8A20;0A=15212D0939:00077A7089,88;17=17232F3B0B:000789,8D;3B=172F3B0B23:000789,88;15=1B2733030F:007C343589,88;1B=212D390915:007C343589,88;12=15212D3909:006A79190F6F2627,6B4620453829;0B=380814202C:006A38075040,0F630141202B454F;2D=121E2A3606:006A5040077448,702B2C0F2F29;2E=0B17232F3B:006A583F232227261F20,0F29154703;1C=232F3B0B17:006A6F391974,0F2E614447702C292F71201F3852;1F=31010D1925:0034353989,522E1F;2B=0D19253101:00343589,060F52;00=2A3606121E:00343589,7129565A;01=131F2B3707:00343589,88;3B=111D350529:00343589,88;00=152D390921:000150402627,0F292F2B;1E=2733030F1B:00010F17505840,565A803852838463;15=101C283404:000103020611187B7C2D4E616439201E0C26,522E4744;29=101C283404:0001030239450D297115332C2E4C,0F54207052843863;2C=101C283404:000103392E54837548,19700F58157A2038;1F=1830000C24:00010670175B71292A152322271E,03637C2B38;0F=0E1A263202:0001067052842E71291F20,030F384775;33=131F2B3707:0001067011185B0D332C2E2D712909262322271F200C,0F526325;0C=17232F0B3B:000106040318111A170F33292A26276A201D0C7A71077C1F1E74694F,52;0A=0D19253101:0001060403232226380F767754,56802015;2D=111D293505:000106025B75712904032D302F382B2A0D801E20,2E1F0F;0C=0D19253101:00010607155B5C26271E2021165D83,38470F29;20=16222E3A0A:000106073018110F3329271E0C7A0D75,38262015;08=0F1B273303:00010618111A16332C2E2F2D27200C07483A450D,15528438;25=0E1A263202:000102261E2027,03476F700F2971382E;39=15212D3909:0001027007834878,2E388A201D;17=131F2B3707:00010203450D3329152C2E2F5375,0F638A6A1D38;2D=0E1A263202:000102030D70332C2E29712F534426201F1E,0F3815;2F=121E2A3606:0001020370450D332C2E2D152971,0F52838A201D;1B=1D29350511:0001020370528384631575712D2E4E3E581F1E1D,292C2B45262080;3A=222E3A0A16:0001020370392F2971152B54754C,458A1F0F2046;2C=14202C3808:0001020370392F80712B546675201E26,1F58472E15;2F=16222E3A0A:000102037039714515750D33,201D381F092E0F11;03=32020E1A26:000102030F7039453319152E2D2F63751F0C1E20,71290D3847;2C=16222E3A0A:000102035270392E2D5863,0F381D2B29212015;11=131F2B3707:0001020352666A,0F7020262938172F;3A=2430000C18:00010203332C2E2F1558631F,0F1920707A29712646;27=05111D2935:0001020311180F702E1F7952838468332D6749443E46630C1E1D21,292B20;35=1C28340410:000102031118396375664819,1D413870208029;1F=232F3B0B17:000102033945332C6375201D21,0F1929710D70;2D=101C283404:00010203390D3329152C2B751E20,2E1F544753524583;16=111D293505:0001020339161745514F2C190F1A152E2D2F304979,8D;13=17232F3B0B:00010203396A79637566201D211E,29387D71707A;30=101C283404:000102033911170D3319152E2F0947442627201F,8D;25=3505111D29:000102031811392E2D19528384543E4463751F20,152F1A290F;0D=0E1A263202:0001020626232227201E,0F2E03801F;0F=101C283404:0001020617385483,030F47202B6B;1B=2733030F1B:000102060F17705283797823221E2027,2E7129;10=121E2A3606:000102062A397129797B7C2E1F2425,162F5D2026;2B=182430000C:0001020603691817452C2E2D498344,412B6A096338;08=3A0A16222E:0001020603700F7B7C2E1F692D48302F565A586366240C21,2B151A2920;39=17232F3B0B:000102060717706A33392D2E4E674447482322271E210C,71292B4F20;23=33030F1B27:0001020607036A5D397C2163664744,0F4E25208A;08=04101C2834:000102060775261F20,71290F7015;0C=101C283404:00010206111803302F565A802D4E2B881F261E0C,0D0F52;1B=16222E3A0A:00010206090D5B7952838454685D7B7C443D77656366201F1E,030F47454F;24=010D192531:000102071283542627201D210C4C78,29580F2E6352031F;01=32020E1A26:00010275261E0C2322,6303706F0F292E1F;19=0E2632021A:000102081A158483262322270C1E,700F292E;1B=101C283404:00011A1615262322271F1E200C214C,472B0F11;24=3707131F2B:00013974150726271F1E200C,0F06520D297170382B45;07=17233B0B2F:000118111A16175B154C26271E200C232279302F5D528384547543,0F297C7A;03=17232F3B0B:000118111A332C2E2D1571292A2627200C7A1979,387C;02=172F3B0B23:000118111A332C2E2D1571292A23222627200C7A791970302F5D5283845456,387C454F;1F=0E1A263202:0001081811171A160F1571292A26271E20396476452B0D,632E5238;13=15212D3909:00211D1E232289,8D;16=0E2632021A:006526232227201F,89;26=05111D2935:00657689,6B0F52;25=16223A0A2E:00654C89,8D;03=2A3606121E:006589,29704720;08=15212D3909:001A170F5B332E2D7129261E203E5D,15035283;06=152139092D:001A170F1379232227761926,712938;33=1C28340410:001A1715838444363F261F1E200C2322,0F476B520363;38=14202C3808:001A2B5448701938754C,152E202425;10=0D19253101:0039504089,8D;39=283404101C:003926271E20747677642322480C06,2E1F;38=0F1B273303:0039262322271E201D210C0748766465776A,150F3829;39=202C380814:0039332C2E2D2F152B4644261F1E,0F7019382971637A;31=192531010D:0039787989,1F2E20;10=101C283404:0039787089,2E1F8A034F206B;29=05111D2935:00398B7989,0F20;0C=131F2B3707:0039077426271F1E20,0F29713852832B63;2D=14202C3808:0039076A7426271F2048,0F79197029717A38;2C=0E1A263202:00397C343548,89;29=3B0B17232F:003934357B7C89,0F20;28=16222E0A3A:0039343589,8D;34=16222E3A0A:0039343589,88;0B=111D293505:0039343589,88;05=17233B0B2F:0039343589,88;2E=101C283404:0039343589,88;06=17233B0B2F:00390103040618111A17332C2E262322271E157A7071302F45631F2075,807C;2B=0915212D39:00396577647969271E2322,52012E1F262061;2D=16222E3A0A:00391A6A15384C4943363F7448,0F0379472B63;19=192531010D:00394C786F89,0F2E4420;35=182430000C:003989,88;2A=121E2A3606:003989,88;16=13191F252B313701070D:003989,88;01=0D19310125:003989,88;0D=0F1B273303:0018112C2E01040607332D292A09270C2322696870302F47023945,38205280;1C=101C340428:00190F153917701A48,472E1F2003;34=1F2B370713:00195475667689,5229152E20;19=222E3A0A16:004C504089,0F521547;0A=3A0A16222E:005C702C2F802B154C78,5A562E1F208A454663;19=102834041C:0089,090F15;38=131F2B3707:71297C790001062A0F802D,5215705D;2F=0E1A263202:7100030170391959152E2D2F2B,0F201F4F75668A38;24=030F1B2733:5483846376656419786A,29803020;1A=2430000C18:5452838479195D00012A0D7B7C2C2E3348156366242526201E,0F7129;2D=07131F2B37:54528384700001020339482D301571565A363F637566,06292B201F8A;29=030F1B2733:54528384036F796A153E65,712963;1D=2733030F1B:5452848303152F802C2D,2E1F208A7A700F29710C7D;22=33030F1B27:118384155B20272E1F21,0F0338;0E=0E1A263202:1179302F842627201E,0071292E1F;0E=06121E2A36:11177B7C52842C2E5B1F20,060071292F0F;0E=101C283404:110F70528475660D7129,012E1F2026;2A=101C283404:110F03706A795215636626271E,0C012F38062C292B;07=020E1A2632:110F0001702C2E7129201F,5206;0C=0E1A263202:110F00017052792E1F1E,71290D2B20;20=293505111D:110F1A6A702C2E1952838453712F6375,4520150001;1D=101C340428:11037B7C2E2F7129,0F5220;0B=0E1A263202:11000170792C2E7129,0F52201F;01=111D350529:110001527B7C2E75,0F20;09=04101C2834:1100010206702D804E2B2620,0F52540D;00=131F2B3707:110001392E1F20,0F7129;32=17232F3B0B:117154528384292C2E302D4E092A0D50407970443D,56804100;23=2B3707131F:111879690001020370396A2E2D528384543E637566,0F380D582920;00=222E3A0A16:111879076A1A171523221E272024,5229700F1D012E2B0C2F;0B=06121E2A36:111817000106702C2E71292A0D33802D302F4E2B44,0F522520;29=07131F2B37:11180F000704030D7C684580302F153867534775,702041;19=2430000C18:11180F00012A0D70795D7B7C39332D2C2E4E4863664C,064F478A20;37=1E2A360612:11180F000152548471702C2E2D4E303348492A156144474C63,8A201F384506;18=202C380814:11180F000128032A0D7129302C2E2F2D802B09411F1E20,52845438;24=2F3B0B1723:11180F0001020370391952845329712B632E7B7C792D2C8020,385D15;1E=293505111D:11180F0001020339700D29716375662E1F2620,38155680;16=16222E3A0A:11180F000102587B7C5283847971302F804B2B497675,09612E1F20;1E=232F3B0B17:11180F00010E715229702E79692C2D2B15093954444C66,2F565A8061;32=131F2B3707:11180F71297052838454792A0D33802D153853201F1E212627,012F564766;28=3707131F2B:11180F71297000010604032A0D793969302F33802D636675,201F52565A1E;18=1D29350511:11180F5C000102030D332C2E195329711563261F202322,5284;3A=202C380814:11180370392A0D3329712C2F156375795B5D,450C8A00382E1F2001;0C=3A0A16222E:11185283847975661271393D692D15565A201E262322,292F060D0C;02=30000C1824:111852838470795B302F404533802D152B39201E23221D212726,0F2E1F010D29;23=2D39091521:111852838453546319297115030D332B2C,060F8A2E38201F;38=0D19253101:111800020D041A796933483E5347446563751F1D212026,010F09150C;17=2430000C18:1118000717161A2C2E3371292B56433D6375363F,0F010347208A;09=020E1A2632:111800012A0D2C705271292E201F,15386179;04=30000C1824:11180001032A0D70795B2C2E302F802D4E152B33714161201F26,52095847;0A=000C182430:11180001020439332C2E302F2B5844477515634C1F2721,0F520D19267A29717020;37=232F3B0B17:111800010206037939695483845D2D2E4E446375661F262120,0F52290D71;23=31010D1925:111800010206071979697C67474475664C,0F16298A20;14=182430000C:11187129705B79000106032A0D397B6F7C802D2C2B61756627261E0C1D21,0F2E154147;32=192531010D:111871545283842979397B7C69152B2A0D33485324251F1D1E26,6B00702F800C20;1E=1F2B370713:5D0007363F232227261E21,037C0F471F20;2E=0E1A263202:6526232227201F,88;0E=111D293505:653989,88;06=131F2B3707:363F6526232227201E89,88;32=1A2632020E:1A454F548384,88;1D=121E2A3606:1A38712975,0F20;1A=0E1A263202:1A162623227954,0001710F29;0C=0F1B273303:1A16170F13152654,3852204F;32=0F1B273303:1A5D453A332C2E2F4B25262322271F201E1D21,000F7047;23=2F3B0B1723:3950177089,522E1F0F20;1A=1D29350511:39701117302F713819297566,004551152C2E201D1F;34=121E2A3606:393589,88;1A=15212D3909:393589,88;2C=182430000C:393589,88;25=101C283404:393589,88;1C=2531010D19:394089,71294709636F7C44;0D=0D19253101:3948007889,8D;38=2430000C18:394889,88;11=111D293505:394889,88;2A=0E1A263202:3907,88;07=0D19253101:39343589,88;31=101C283404:393489,88;01=222E3A0A16:390050404C89,0F5283296920;18=131F2B3707:39006A26201F,0F520D38580629712B;09=380814202C:390001022C2E302F1575804B2D261F20,0D0F0319707D5229717A;15=17232F3B0B:3989,8D;11=0A16222E3A:181179838454637566,0F52290120;07=111D293505:18117915384C,5220;0E=0C18243000:1811795B032C2E302F802D4163754C27261E1D2120,010D0F29521F;29=16222E0A3A:1811795B5466,0120;2F=192531010D:181179000607040D03302F5283844F3A45512B1533664C47,090F702E208A;2B=0B17232F3B:18117900012C2E5B1F20,0F710D5229;1A=122A36061E:181179190E332C2E2D52637566262322271F20,8D;02=0F1B273303:181117332C2E1526232227201F1E3E,38030F5229;22=142038082C:181170792C2F7129,5220;1F=121E36062A:18117001061579,712920;23=121E2A3606:18117000012C2E7129,5220;24=3505111D29:18110F3900010203700D3329711563752E1F0C201D,38525D;1A=101C283404:18110F197983842E230C271F1E7A70525463,26202915;03=111D293505:1811002E1F8384,0F20;22=1824000C30:181100012C2E2F1F,0F38;21=142038082C:181100012C2E2F1F20,0F52;29=14202C3808:181100015B3875,2E20;34=15212D3909:181100012A0D2C2E2F2B2D304E447129841F,0F0941613820;0F=0814202C38:181100012A0D52842953411E20,2E1F0F4715;2F=131F2B3707:18110001032A0D845B7129302F791533536678,0F208A1F1D;33=17232F3B0B:18115452840001712970802D2C2E302F2B2A0D78791F,0F20475861;0E=0F1B273303:18111A16175B3315262322271F1E201D215D838454433E363F754551,00030F29;0D=0C18243000:18115C0001702A2C2E2F5283847129795B6375802D154C,1F208A24;07=15212D3909:88,26205283;0D=17232F3B0B:88,8D;17=102834041C:88,8D;0B=15212D0939:88,8D;24=121E2A0636:88,8D;09=17232F0B3B:88,8D;13=111D293505:1979,3F2F2E45207D;37=112935051D:1966583F6589,88;31=16222E3A0A:4C4089,88;0C=0C18243000:4C78,297172380D2A2E0F474841;12=16222E3A0A:5C0F1811790070528471291F20,2F03805125;14=1C28340410:5C0001020652835B0E03804B2D4E2B752024210C,292E565A;36=1A2632020E:5C11180001027170520D2984832B15200C,03802E3863;33=15212D3909:89,6B;34=111D293505:89,8D;"

    /** 时辰宜忌数据  */
    private const val TIME_YI_JI =
        "0D28=,2C2E2128=,2C2E0110=,2C2E0C1F=,2C2E7A701B1C=,01022308=,01026D003026=,000106037A702D02=,000106037A702802=,000106037A703131=,000106037A70341B=,000106087A701F0E=,000106087A702E15=,000106087A702C2E0E39=,000106087A702C2E0D2B=,881727=,88032D=,88352F=,882B2F=,882125=,882A22=,880C1E=,880220=,88161A=,882018=,883422=,880113=,880B11=,883315=,882915=,881F17=,88150D=,88122E=,88302A=,88262A=,883A28=,880826=,881C2C=,881905=,882303=,880F09=,88050B=,883701=,882D01=,88060C=,882410=,881A12=,882E0E=,88380E=,881010=,883630=,881834=,880E38=,882232=,882C30=,88043A=,881E0A=,880006=,883208=,880A04=,881400=,882808=,883137=,883B35=,882737=,881D39=,88133B=,880933=,88251D=,882F1B=,881B1F=,88111D=,880719=,88391B=,88212D=,7A702C0B15=,7A70551515=,7A70552D00=,7A7D2C2E1334=382C,000106083528=382C,7A70000106080504=382C7A6C55700F197120,00010608223A=380006082C,01026D0D2C=380006082C,01027A70551D30=380006082C0F71295283,01027A703636=380006082C0F71295283,0102416D1226=380006082C7A706C550F297120,0102251C=380006082C7A6C55700F197120,01026D2300=3800010608,2C2E0324=3800010608,7A702C2E082E=3800010608,7A70552C2E3B34=38000106082C,2F8026330C=38000106082C,2F80267A701622=38000106082C7A70556C0F197120,1904=38000106082C7A6C55700F197120,1514=38000106087A70556C0F197120,2C2E3138=38000106087A70556C0F197120,2C2E0B10=38000106087A6C55700F197120,2C2E2B28=387A6C55700F197120,000106082C2E2E16=38082C,000106037A700E3A=38082C,000106037A703708=38082C6C550F197120,000106037A701B20=38082C6C550F197120,000106037A70111C=38082C6C550F197120,000106037A703A2D=2C38,000106082733=2C38,000106081015=2C38020F71295283,000106083817=2C2920,7A700F03=2C2920,616D1839=2C292070556C100F,00010608161B=2C2920020F7100010608,302B=2C2920556C0F1971,7A701E07=2C2920010F,1B1B=2C2920010670100F00,352B=2C292000010206100F70,082B=2C292000010206100F707A,0C21=2C292000010870556C100F7A,0617=2C29206C0F1971,7A70552807=2C29207A70556C0F197100010206,122F=2C29207A706C55100F1971,1017=2C29207A706C55100F1971,2731=2C20,616D0436=2C2070550F,7A7D01022E12=2C200F71295283,01021831=2C20556C0F1971,7A702912=2C20100F52,01026D1D33=2C807138152952,000106080E31=2C80713815295270556C100F,000106083201=2C80713815295270556C100F7A,000106080327=2C80713815295202100F,000106037A702B2B=2C80713815295202100F,000106037A702801=2C80713815295202100F,000106083639=2C80713815295202100F7A7055,00010608341D=2C807138152952556C100F,000106037A701B23=2C807138152952010F6C55,7A70302D=2C8071381529520102100F7A7055,2231=2C8071381529520102100F7A6C55,1F13=2C80713815295200010206100F20,7A70313B=2C8071381529526C550F,000106037A701A15=2C8071381529527A70550F,000106080219=2C8071381529527A70556C0F19,000106082E0D=2C80713815295208556C100F,000106037A70161F=2C80711529525670556C100F,000106083813=2C80711529525670556C100F,000106082D05=2C807115295256020F7A706C55,2237=2C80711529525602100F,000106081F0D=2C80711529525602100F55,000106037A702627=2C8071152952560102100F7A706C,2C33=2C8071152952560102100F7A706C,0939=2C80711529525601100F7A7055,416D021F=2C80711529525600010206100F70,0E37=2C80711529525600010870556C10,2129=2C8071152952566C550F,7A702519=2C8071152952566C550F19,7A702417=2C8071152952566C55100F19,000106037A70043B=2C8071152952566C55100F19,000106037A700C1B=2C8071152952566C55100F19,7A703B31=2C8071152952566C100F19,7A705500010603172D=2C8071152952567A70550F,416D3A2F=2C8071152952567A70556C100F,1901=2C8071152952567A706C55100F19,1119=2C8071152952567A6C55700F19,1C2B=2C80711529525608556C100F,000106037A701403=2C80711529525608556C100F,000106037A70071D=2C80711529525608100F55,000106037A701908=292C20,7A7D01026D2E0F=292C200102100F7A7055,032C=292C20000608,0102071C=292C206C550F1971,000106037A700E33=292C207A70556C000108,0503=2920550F,7A702C2E0721=2920556C100F,7A702C1225=2920000108556C100F,7A702C2E1F11=2900010870556C100F7A,032C201A11=297A70556C100F,032C200E35=297A70556C100F,032C20000A=70556C0F197120,7A7D3A29=70556C100F2C20,000106081C25=70556C100F2C20,000106082805=70556C100F2C20,000106082F20=70556C100F2C20,00010608150C=70556C100F29522002,7A7D000106033314=70556C100F,00010608032C20122A=70556C08,7A7D000106032415=70100F2C715220,000106081A0D=4B0F2C20,000106037A701902=4B0F2C20,000106080E3B=4B0F20,7A702C000106032E17=0F2C09382920,7A7000010603363B=0F2C093829206C55,000106037A70082C=0F29528320,7A2C71707D01026D0718=0F712952832C20,7A7D01021C26=0F712952832C20,7A7D01026D3918=0F712952832C2038000608,01027A70552126=0F712952832C2010,01021330=0F712952832C207A7055,01021118=0F712952832C207A7055,01023524=0F715220,7A70552C2E3419=20556C0F1971,7A702C2E1D31=2000010206100F,7A702C1E05=0270290F2C207A,00010608212C=0270550F,00010608032C200C23=0270550F,00010608032C203706=0270550F20,000106082C2E2520=0270550F20,7A7D000106032E13=0270550F202C807115295256,000106081620=020F29528320,000106087A2C71707D0112=020F2952832055,7A2C71707D000106030F08=020F20,7A7055000106032A23=020F712952832C20,2521=020F712952832C20,000106082F21=020F712952832C20,000106080003=020F712952832C20,7A700432=020F712952832C2038000106086C,7A701E03=020F712952832C2070556C10,000106081623=020F712952832C2001,2236=020F712952832C2001,000B=020F712952832C2001,7A70552C36=020F712952832C20013800,416D341E=020F712952832C20017055,7A7D0E32=020F712952832C200110,7A7D0329=020F712952832C2001107A706C55,262D=020F712952832C20017A7055,1229=020F712952832C2000010608,122D=020F712952832C2000010608,1011=020F712952832C2000010608,0A0B=020F712952832C2000010608,1F0F=020F712952832C2000010870556C,1A0E=020F712952832C206C55,7A703312=020F712952832C2010,000106037A70172A=020F712952832C2010,7A7055000106033B3B=020F712952832C2010,416D000106037A700B12=020F712952832C20106C55,000106037A700615=020F712952832C207A7055,3203=020F712952832C207A7055,201B=020F712952832C207A706C5510,2023=020F712952832C207A6C7055,2A1B=020F7129528320,000106087A702C2629=020F7129528320,7A702C2E3709=020F7129528320,7A702C000106083A24=020F7129528320,7A70552C2E341A=020F712952832038000106087A70,2C2E1C2D=020F712952832001,7A702C2E0611=020F712952832001,7A702C2E021A=020F712952832001,7A7D2C2E3815=020F71295283200100,7A702C2E3024=020F71295283200110,616D2C2E093B=020F71295283206C55,7A702C2E000106030505=020F71295283206C55,7A702C030C1A=020F71295283207A706C55,000106082C2E3705=020F712952837A706C55,032C201F0C=02550F20,000106037A700508=02550F20,000106037A703029=02550F20,000106087A702C2E3027=02550F202C807115295256,000106037A703526=02100F2C29528320,000106037A70150E=02100F2C29528320,00010608380F=02100F2C29528320,000106083527=02100F2C29528320,7A70000106031C27=02100F2C2955528320,000106081227=02100F2C29555283207A706C,00010608060F=02100F2C29555283207A706C,000106081D34=02100F7020,7A7D000106030F02=02100F7055528315,2F8026000106083920=02100F7055528315,2F802600010608212A=02100F7055528315,000106082A20=02100F7055528315,000106083A26=02100F7055528315,000106080439=02100F7055528315,000106080008=02100F7055528315,000106081B21=02100F7055528315,00010608071B=02100F7055528315,000106080D24=02100F7055528315,000106082C2E2C32=02100F7055528315,000106082C2E2B2C=02100F7055528315,00010608032C201402=02100F7055528315,00010608032C20391C=02100F7055528315,7A7D000106031F10=02100F705552831538,2F8026000106082D06=02100F70555283157A,2F802600010608290D=02100F20,7A702C000106032416=02100F20,616D000106037A702C34=02100F20292C,7A70000106031C2A=02100F528315,7A7055000106032234=02100F528315,7A7055000106032A21=02100F55528315,000106037A703313=02100F55528315,000106037A700509=02100F55528315,000106037A702D03=02100F55528315,000106037A700613=02100F55528315,000106037A702235=02100F55528315,000106037A70391D=02100F55528315,000106037A70100F=02100F55528315,000106087A702C111B=02100F55528315,000106087A702C2E2916=02100F55528315,7A2C71707D000106030430=02100F55528315,7A2C71707D000106033B32=02100F55528315,7A2C71707D000106081903=02100F55528315,7A702C2E000106033A27=02100F55528315,7A702C000106030931=02100F55528315,7A702C000106030C1C=02100F55528315,7A70000106032735=02100F555283152C8071,000106037A700B13=02100F555283152C807138,000106037A701517=02100F555283152C807138,000106037A702917=02100F555283156C,000106037A703136=550F522010,7A2C71707D01022A1E=550F715220,7A702C2E1333=550F715220,7A702C2E000106081405=556C,000106087A702C2E0433=556C,7A70000106083B38=556C0F197120,7A702C2E1E01=556C0F19712001,7A702C2E190B=556C000108,7A70230B=556C000108,7A702C2E1A0F=556C0001082C807115295256,7A701830=556C0008,7A2C71707D01023814=556C100F295220,7A2C71707D03082F=556C100F295220,7A702C0C1D=556C100F295220,7A702C2E00010603021D=556C100F295220,7A70000106031121=556C100F2952202C,7A701835=556C100F2952202C80713815,000106037A703B30=556C100F29522002,000106037A70290C=556C100F29522002,7A70000106030930=556C100F2952200238,000106037A702B27=556C100F2952200102,7A702C2E3812=556C08,000106037A701012=556C08,000106037A701621=556C08,7A702C2E000106033209=556C08,7A702C2E000106032021=556C082C807138152952,000106037A700009=556C082C807138152952,000106037A702A1D=807138152952000170100F,032C200A05=807138152952000170100F,032C20273B=8071381529527A706C550F,032C203423=80711529525600010870556C100F,032C201511=80711529525600010870556C100F,032C20183B=80711529525600010870556C100F,032C203311=010F2C80093829206C55,7A702B29=010F2C80093829206C55,7A70616D3A25=010F2C09382920,7A70550825=010F2C093829207A6C5570,201E=010F09382920,7A702C2E352E=010670100F2C71522000,1C28=010670100F7152207A6C55,2C2E2E11=0106100F7152,7A70032C203205=0106100F71526C,7A70032C202A19=0102290F20,7A702C2E2A1F=010270290F2C207A6C55,2413=010270290F2C207A6C55,0437=010270290F2C207A6C55,0935=010270550F,032C201B18=010270550F20,2B24=010270550F20,2F80261906=010270550F20,2C2E2732=010270550F20,2C2E071A=010270550F20,2C2E3700=010270550F20,7A7D1724=010270550F203800,2F80263921=010270550F202C29,416D290F=010270550F202C807138152952,1619=010270550F202C8071381529527A,3207=010270550F202C80711529525600,0829=010270550F2000,060D=010270550F2000,0001=010270550F2000,2736=010270550F207A,1B1E=010270550F207A,2C2E140B=010270550F207A6C,0114=010270550F7A6C,032C202C3B=010270550F7A6C,032C20201F=0102550F20,7A702C1A13=0102550F20,7A702C3637=0102550F20,7A702C280B=0102550F20,7A702C223B=0102550F20,7A702C032D04=0102100F2C29528320,7A701409=0102100F2C29528320,7A70552307=0102100F2C2952832000,0005=0102100F295283,032C207A700A00=0102100F2955528320,7A2C71707D082D=0102100F2955528320,7A702C2E2809=0102100F295552832000,7A702C2E2B2D=0102100F7055528315,021E=0102100F7055528315,0C20=0102100F7055528315,2F80263420=0102100F7055528315,2F80261510=0102100F7055528315,2F80262E10=0102100F7055528315,2F80262806=0102100F7055528315,2F80263134=0102100F7055528315,2F80261D38=0102100F7055528315,2F8026251A=0102100F7055528315,2F80263A2A=0102100F7055528315,2F80267A7D1120=0102100F7055528315,2F80267A7D0824=0102100F7055528315,2C2E1E00=0102100F7055528315,2C2E7A2F1D=0102100F7055528315,032C200A06=0102100F7055528315,7A7D2C2E1C2E=0102100F70555283153800,2F80261832=0102100F70555283153800,2C2E280A=0102100F70555283153800,2C2E320A=0102100F705552831538007A,2738=0102100F705552831538007A6C,2F80260720=0102100F705552831538007A6C,2F8026032B=0102100F70555283152C292000,1907=0102100F70555283152C292000,3703=0102100F70555283152C292000,2739=0102100F70555283152C29207A,251B=0102100F70555283152C29207A,2B25=0102100F70555283152C29207A6C,1331=0102100F70555283152C207A,0D29=0102100F70555283152C80717A,1B1D=0102100F70555283158071,032C200D2D=0102100F705552831500,1725=0102100F705552831500,352D=0102100F705552831500,0C19=0102100F705552831500,150F=0102100F705552831500,3025=0102100F705552831500,0F07=0102100F705552831500,1E09=0102100F705552831500,251F=0102100F705552831500,010C=0102100F705552831500,2F80261A10=0102100F705552831500,2F80261016=0102100F705552831500,2F80260934=0102100F705552831500,2F80262910=0102100F705552831500,2F80267A7D1A14=0102100F705552831500,2C2E2304=0102100F705552831500,7A7D3421=0102100F7055528315002C2920,212F=0102100F7055528315002C807138,111F=0102100F7055528315002C807138,3135=0102100F7055528315008071,032C200828=0102100F7055528315007A6C,2022=0102100F70555283156C,7A7D140A=0102100F70555283156C,7A7D2C2E2127=0102100F70555283157A,1618=0102100F70555283157A,0B0F=0102100F70555283157A,1836=0102100F70555283157A,172E=0102100F70555283157A,2F8026352A=0102100F70555283157A,2F80262B2E=0102100F70555283157A,2F8026082A=0102100F70555283157A,2F80262306=0102100F70555283157A,2F80263702=0102100F70555283157A,2F80262C38=0102100F70555283157A,2F80261E06=0102100F70555283157A,2F80261B1A=0102100F70555283157A,2F8026032A=0102100F70555283157A,2C2E1F14=0102100F70555283157A,2C2E3810=0102100F70555283157A,2C2E262C=0102100F70555283157A29,032C20201A=0102100F70555283157A00,2F80260A02=0102100F70555283157A00,2F80261838=0102100F70555283157A6C,2F80260E34=0102100F70555283157A6C,2F80260438=0102100F70555283157A6C,2C2E2F1A=0102100F70555283157A6C,2C2E2305=0102100F528315,7A70553525=0102100F5283152C8071,7A70550723=0102100F528315807138,7A7055032C200D2A=0102100F55528315,2F80267A2C71707D3316=0102100F55528315,2F80267A2C71707D1224=0102100F55528315,2F80267A2C71707D212E=0102100F55528315,2F80267A700616=0102100F55528315,2F80267A70380C=0102100F55528315,2F80267A700434=0102100F55528315,2F80267A702A18=0102100F55528315,7A2C71707D2628=0102100F55528315,7A2C71707D100C=0102100F55528315,7A2C71707D2F80261729=0102100F55528315,7A701F15=0102100F55528315,7A70240E=0102100F55528315,7A703632=0102100F55528315,7A701339=0102100F55528315,7A700115=0102100F55528315,7A702C2C37=0102100F55528315,7A702C320B=0102100F55528315,7A702C3206=0102100F55528315,7A702C2E2238=0102100F55528315,616D2F80267A2C71707D3816=0102100F555283153800,2F80267A701406=0102100F555283153800,2F80267A700111=0102100F555283152C8071,7A700501=0102100F555283152C8071,7A70370B=0102100F555283152C807138,7A703B37=0102100F555283152C80713800,7A701C2F=0102100F555283152920,7A702C240F=0102100F555283152920,7A702C0A03=0102100F555283152920,7A702C0221=0102100F55528315292000,7A702C2E3317=0102100F55528315292000,7A702C2E3634=0102100F5552831500,2F80267A2C71707D3028=0102100F5552831500,7A2C71707D111A=0102100F5552831500,7A2C71707D071E=0102100F5552831500,7A2C71707D2913=0102100F5552831500,7A702F19=0102100F5552831500,7A702301=0102100F5552831500,7A702C3919=0102100F5552831500,7A702C3B33=0102100F5552831500,7A702C2E0223=0102100F5552831500,7A702C03032F=0102100F55528315006C,7A702C2E262E=0102100F555283156C,2F80267A70032E=0102100F555283156C,7A2C71707D0F0B=0102100F555283156C,7A701D3B=0102100F555283156C,7A702C2E030116=01100F1571292C20,2F80267A703200=01100F1571292C20,7A7055370A=01100F1571292C2000,7A701B22=01100F1571292C2000,7A701E04=01100F1571292C2000,416D1336=01100F1571292C20007A70556C,391A=01100F1571292C20007A6C7055,1C24=01100F1571292C207A7055,2F80260D2E=01100F15712920,7A702C2E2D0A=01100F15712920,7A702C2E2800=01100F15712920027A7055,2C2E251E=01100F157129207A70556C,2C2E1228=01100F157129207A70556C,416D2C2E050A=01100F5220,7A70550000=01100F5220,616D2624=01100F5220,616D2F80267A702804=01100F5220006C,7A70550F06=01100F52207A70556C,2C2E2F1E=01100F52207A70556C,2C2E1014=01100F527A70556C,032C20161E=01100F712920,7A702C2E0A0A=01100F71522C2920,616D161C=0070100F292C20,01020F04=0006100F7020,7A7D01026D183A=0006100F7020,616D0102201C=0006100F20,7A2C71707D01026D1D37=000170100F292C20,2F18=000170100F292C802038,161D=00014B0F,032C201338=00014B0F2C2002,2F80261728=00014B0F20,2C2E0F0A=00014B0F20,7A2C71707D1833=00014B0F20,7A702C1407=00014B0F20,7A702C1401=0001060838,2C2E1123=0001060838,416D032C202019=000106082C38,2C31=000106082C38,391F=000106082C38,2523=000106082C38,7A70416D1C29=000106082C38020F71295283,3811=000106082C38020F71295283,7A700937=000106082C386C550F197120,7A700117=00010252100F29202C7A706C55,1337=00010206700F202C807138152952,3A2E=00010206100F7020,616D0610=00010206100F20,7A2C71707D0328=00010206100F20,7A700F01=00010206100F20,7A702C3310=00010206100F20,7A702C2E3139=0001100F298020,7A702C2625=00010870556C100F2C20,1909=00010870556C100F2C20,391E=00010870556C100F2C20,2124=00010870556C100F2C20,2F80267A7D0F00=00010870556C100F2C2038,2D09=00010870556C100F2C2002,0500=00010870556C100F2C207A,2C39=00010870556C100F2C207A,2518=00010870556C100F2C207A,0B0C=00010870556C100F2C207A,2F80262911=00010870556C100F7A,032C200007=000108556C100F2C2029,7A700A07=000108556C100F2C2029,7A701332=000108556C100F20,2C2E7A70100D=000108556C100F20,7A702C2E2239=000108556C100F20,7A702C2E0A01=000108556C100F20,7A702C2E380D=0001086C100F2C20,7A70551D36=0001086C100F2C20,7A70552F1F=000108100F70552920,010D=000108100F70552920,616D0507=000108100F705529202C80713815,0B0D=000108100F705529202C8071157A,3133=000108100F7055292002,2309=000108100F7055292002,416D0002=000108100F705529207A,2F80263202=000108100F705529207A,2F80263638=000108100F705529207A,2C2E2A1A=000108100F705529207A38,2F80262414=000108100F705529207A6C,2C2E2E14=000108100F552920,7A2C71707D1404=000108100F552920,7A2C71707D0B17=000108100F552920,7A70330D=000108100F552920,7A702C172F=000108100F552920,7A702C2E3707=000108100F5529206C,616D7A702C2E302E=6C55700F197120,2C2E7A7D0C22=6C55700F197120,7A7D01026D1E02=6C550F297120,000106037A703923=6C550F297120,7A702C2E03230A=6C550F1920,7A2C71707D240C=6C550F19200210,7A2C71707D000106031A16=6C550F197120,000106037A701513=6C550F197120,7A703A2B=6C550F197120,7A701837=6C550F197120,7A702F23=6C550F197120,7A702F22=6C550F197120,7A702D07=6C550F197120,7A702C2E3922=6C550F197120,7A700102093A=6C550F197120,7A70000106031B19=6C550F197120,616D7A70071F=6C550F197120,616D7A702C2E212B=6C550F197120,616D7A702C2E000106032734=6C550F197120292C,000106037A700325=6C550F1971200001020610,7A702C122B=6C550F19712008,000106037A702411=6C100F2952,7A7055032C20010E=100F2C29528320,01023704=100F2C29528320,0102363A=100F292C206C55,000106037A702B26=100F2920,7A2C71707D01026D302C=100F7055528315,01021E08=100F7055528315,01022730=100F7055528315,01021512=100F7055528315,010200352C=100F7055528315,7A7D01026D2F1C=100F7055528315,7A7D01026D0222=100F70555283153800,01026D2412=100F70555283157A,01022230=100F70555283157A,0102060E=100F70555283157A6C,01022C3A=100F70555283157A6C,01026D1F12=100F1571292C20,01026D3B36=100F1571292C20,01026D1516=100F1571292C20,000106037A702302=100F1571292C20,000106037A701D32=100F1571292C20,000106082F8026330E=100F1571292C20,000106086D2A1C=100F1571292C20,7A7001026D313A=100F1571292C20,7A7000010603341C=100F1571292C20,416D7A70000106032B2A=100F1571292C2002,000106037A700326=100F1571292C20556C,000106037A70273A=100F1571292C2000,01026D0722=100F1571292C2000,01026D2E0C=100F1571292C206C55,000106037A701408=100F1571292C207A706C55,01022020=100F1571292C207A706C55,000106081726=100F1571292C207A6C7055,0102290E=100F1571292C207A6C7055,000106080932=100F1571292C207A6C7055,000106080D26=100F52,00010608032C20100E=100F5283153800,01027A70550B16=100F5220,2F8026000106081122=100F5220,6D010200133A=100F5220,01026D1F16=100F5220,000106037A703132=100F5220,000106083B3A=100F5220,000106082522=100F5220,00010608190A=100F5220,000106082C2E021C=100F5220,7A70000106030936=100F52202C,01026D3A2C=100F52206C55,01027A701A0C=100F52206C55,000106037A700E30=100F52206C55,000106037A700A08=100F52207A706C55,000106083204=100F52207A6C5570,01026D0B0E=100F55528315,01027A2C71707D0004=100F55528315,7A2C71707D01026D1D3A=100F55528315,7A2C71707D01026D3418=100F5552831500,7A2C71707D0102201D=100F712920,7A702C2E00010608030E36=100F71522C2920,01023635=100F715229,00010608032C20021B=7A70550F2C715220,1900=7A70550F715220,2C2E0A09=7A70556C,00010608172C=7A70556C,00010608032C200B14=7A70556C,00010608032C202914=7A70556C0F197120,2C2E0938=7A70556C0F197120,000106082C2E111E=7A70556C000108,0502=7A70556C000108,2F80260D2F=7A70556C0001082C807138152952,2D0B=7A70556C0001082C807138152952,3633=7A70556C0001082C807115295256,0C18=7A70556C0008,01020218=7A70556C0008,0102302F=7A70556C100F295220,000106082C35=7A70556C100F295220,000106081E0B=7A70556C100F2952202C807115,3130=7A70556C100F29522002,000106080506=7A70556C100F29522001,2C2E330F=7A70556C100F29522001022C8071,010F=7A70556C100F295220010200,0435=7A70556C100F295280713815,032C200614=7A70556C100F295201,032C20122C=7A70556C100F29520102,032C203B39=7A706C550F297120,0F05=7A706C550F297102,032C200D25=7A706C550F19712001,616D2233=7A706C550F19712000010608,2626=7A6C70550F197120,01021A17=7A6C70550F197120,00010608262F=7A6C70550F1971202C29,000106083529=7A6C70550F19712002,616D000106082D08=7A6C70550F197120103800,0102341F=7A6C55700F197120,2C2E172B=082C38,7A7055000106030D27=082C38,7A70000106030827=08556C100F2C20,000106037A702803=08556C100F2C20,000106037A701013=08556C100F2C20,7A7000010603262B=08556C100F2C20,7A7000010603240D=08556C100F2C20,7A70000106033631=08556C100F2C20,7A70000106030431=08556C100F20,7A702C2E000106031D35=08100F552920,000106037A701335=08100F552920,000106037A700612=08100F55292038,000106037A70"

    /** 神煞  */
    private val SHEN_SHA = arrayOf<String>(
        "天恩",
        "鸣吠",
        "母仓",
        "不将",
        "四相",
        "鸣吠对",
        "五合",
        "三合",
        "除神",
        "月德",
        "月空",
        "月德合",
        "月恩",
        "时阴",
        "五富",
        "生气",
        "金匮",
        "相日",
        "阴德",
        "六合",
        "益后",
        "青龙",
        "续世",
        "明堂",
        "王日",
        "要安",
        "官日",
        "吉期",
        "福德",
        "六仪",
        "金堂",
        "宝光",
        "民日",
        "临日",
        "天马",
        "敬安",
        "普护",
        "驿马",
        "天后",
        "阳德",
        "天喜",
        "天医",
        "司命",
        "圣心",
        "玉宇",
        "守日",
        "时德",
        "解神",
        "时阳",
        "天仓",
        "天巫",
        "玉堂",
        "福生",
        "天德",
        "天德合",
        "天愿",
        "天赦",
        "天符",
        "阴神",
        "解除",
        "五虚",
        "五离",
        "重日",
        "复日",
        "血支",
        "天贼",
        "土符",
        "游祸",
        "白虎",
        "小耗",
        "致死",
        "河魁",
        "劫煞",
        "月煞",
        "月建",
        "往亡",
        "大时",
        "大败",
        "咸池",
        "厌对",
        "招摇",
        "九坎",
        "九焦",
        "天罡",
        "死神",
        "月害",
        "死气",
        "月破",
        "大耗",
        "天牢",
        "元武",
        "月厌",
        "月虚",
        "归忌",
        "小时",
        "天刑",
        "朱雀",
        "九空",
        "天吏",
        "地火",
        "四击",
        "大煞",
        "勾陈",
        "八专",
        "灾煞",
        "天火",
        "血忌",
        "土府",
        "月刑",
        "触水龙",
        "地囊",
        "八风",
        "四废",
        "四忌",
        "四穷",
        "五墓",
        "阴错",
        "四耗",
        "阳错",
        "孤辰",
        "小会",
        "大会",
        "八龙",
        "七鸟",
        "九虎",
        "六蛇",
        "天狗",
        "行狠",
        "了戾",
        "岁薄",
        "逐阵",
        "三丧",
        "三阴",
        "阴道冲阳",
        "阴位",
        "阴阳交破",
        "阴阳俱错",
        "阴阳击冲",
        "鬼哭",
        "单阴",
        "绝阴",
        "纯阳",
        "阳错阴冲",
        "七符",
        "成日",
        "孤阳",
        "绝阳",
        "纯阴",
        "大退",
        "四离",
        "阳破阴冲"
    )

    /**
     * 吉神宜趋，凶神宜忌数据（参考[https://www.51wnl-cq.com/](https://www.51wnl-cq.com/)并进行了部分数据修正）
     */
    private val DAY_SHEN_SHA = arrayOf<String>(
        ";000002300F14156869717A3F;01001617495C40413C425D6A;0209000C041831031906054A5E6B4B5F;033500041A1B032C06054C4D4E60;04002D321C1D1E104F50615152;05111F53546C55433C3E;062E200721220D01566E44;070B2333242F45;08360A2526242F080157583D59;091234080162463C3D5A;0A270728292A5B6364653F79;0B0237130E2B4748727A3E66;0C09020C04300F0314150568696D;0D3504031617495C40413C6F425D6A;0E38183119064A5E6B4B5F;0F001A1B032C064C4D4E60;10002D321C1D1E104F50615152;110B00111F53546C55433C3E;12360A002E200721220D015644;13002333456D;142526242F080157583F3D59;15001234080162463C3D5A;16090004270728292A5B636465;17350204130E032B47483E66;1802300F14156869;19031617495C40413C425D6A;1A1831031906054A5E6B4B5F;1B0B1A1B032C06054C4D4E;1C360A2D321C1D1E104F50615152;1D111F53546C55433C3E;1E2E200721220D01563F44;1F23334573;20090C042526242F080157583D;2135041234080162463C3D5A;22270728292A5B636465;2302130E032B47483E66;2402300F0314150568696E;250B031617495C40413C425D6A;26360A18311906054A5E6B4B5F;271A1B2C06054C4D4E60;282D321C1D1E104F506151523F;29111F53546C55433C3E;2A090C042E200721220D015644;2B350423334567;2C2526242F0857583D59;2D001234080162463C3D5A;2E00270728292A5B63646574;2F0B0002130E032B47483E66;30360A0002300F141505686975;31001617495C40413C425D6A676D;3218311906054A5E6B4B3F675F76;331A1B2C06054C4D4E60;34090C042D321C1D1E104F50615152;353504111F53546C55433C6F3E;362E200721220D5644;3723334567;382526242F08015758703D6759;390B123408016246703C3D5A84;3A360A270728292A5B636465;3B02130E2B47483E66;",
        ";00090002272A536C4C4D4E41717A;0100300F3103233C6151523F66;020004180E032406150543405D;03000C041A1D340617054A5E6B4F50;04002D1B555F;050B112526321C2B3C42654B3E60;060A2E2014100547546246;0712070D161F566A;0822192F0148453D44;092C083301575868695B633C3D;0A0937131E495C6459;0B020721282903727A3F3E5A;0C020427032A05536C4C4D4E416D;0D0C04300F03233C6F61515266;0E38180E24061543405D;0F0B001A1D3406174A5E6B4F5078;100A002D1B555F;1100112526321C2B3C42654B3E60;12002E2014100147546246;130012070D161F566A6D;140922192F080148453D44;152C083301575868695B633C3F3D44;160413031E495C6459;17020C0407212829033E5A;1802272A536C4C4D4E41;190B300F3103233C61515266;1A0A180E032406150543405D;1B1A1D340617014A5E6B4F50;1C2D1B555F;1D112526321C2B3C42654B3E60;1E092E2014100147546246;1F12070D161F56736E6A3F;200422192F080148453D44;210C042C083301575868695B633C3D;22131E495C6459;230B0207212829033E5A;240A0227032A05536C4C4D4E41;25300F31233C61515266;26180E2406150543405D;271A1D340617054A5E6B4F50;28092D1B555F;29112526321C2B3C42654B3F3E60;2A042E2014100147546246;2B0C0412070D161F566A67;2C22192F0848453D44;2D0B002C083301575868695B633C3D85;2E0A0013031E495C6459;2F0002072128293E5A;300002272A05536C4C4D4E4175;3100300F31233C6151526E676D66;3209180E2406150543405D;331A1D340617054A5E6B4F503F76;34042D1B555F;350C04112526321C2B3C6F42654B3E60;362E20141047546246;370B12070D161F566A67;380A22192F08014845703D6744;392C083301575868695B63703C3D74;3A131E495C6459;3B02072128293E5A;",
        ";00000207282931032B717A6E5D59;01000314473C5A;020A000427182526300F1D16062A054F506A;03360B00041A1906055562464066;04002D2C154A5E6B6C733F788B;0512111B0E1E17483C3E;060C2E20321C016869655F;0753544960;08350907210D230810015B63564B3D77;091324081F014C4D4E453C423D;0A2203342F57586461515244;0B02032C4341727A3E;0C0A020407282931032B055D6D59;0D360B040314473C6F5A;0E3827182526300F1D16062A4F506A3F;0F001A19065562464066;10000C2D2C154A5E6B6C86;110012111B0E1E17483C3E;123509002E20321C0168696E655F;13005354495C6D60;1407210D230810015B63564B3D7F;1537130324081F014C4D4E453C423D;160A042203342F57586461515244;17360B0204033343413E;1802072829312B5D3F59;190314473C5A;1A0C27182526300F1D16062A054F506A;1B1A1906055562464066;1C35092D2C154A5E6B6C;1D12111B0E1E17483C3E;1E2E20321C016869655F;1F5354495C60;200A0407210D230810015B63564B3D80;21360B04130324081F014C4D4E453C423D;2222342F5758646151523F44;2302033343413E;24020C072829312B055D59;2514473C5A;26120927182526300F1D16062A054F506A;271A1906055562464066;282D2C154A5E6B6C76;2912111B0E1E17483C3E;2A0A042E20321C016869655F;2B360B045354495C6760;2C07210D2308105B63564B3F3D77;2D00130324081F014C4D4E453C423D;2E000C22342F57586461515244;2F00023343413E;3035090002072829312B05755D59;310014473C676D5A;3227182526300F1D16062A054F506A67;331A1906055562464066;340A042D2C154A5E6B6C;35360B0412111B0E1E17483C6F3E;362E20321C6869653F5F;375354495C6760;380C07210D230810015B6356704B3D677774;391324081F014C4D4E45703C423D;3A350922342F57586461515244;3B023343413E;",
        ";000A00220362463C44;010B00072128291D334F50645D;02360002230605534855423F59;03000212300F24060568695A;0400042E27342A495C403C8C;050C04184A5E6B3E66788D76;06091A1B2B15014C4D4E;07352D321C14175B636151526577;0811130E16080147546C433C6A3D5F;0920070D190801563D60;0A0A032C2F104541;0B0B252631031E1F57584B3E;0C362203056246717B3C3F6D44;0D072128291D334F50645D;0E020423065348554259;0F00020C0412300F240668696E5A;1009002E12342A495C403C;113500184A5E6B3E66;12001A1B2B15014C4D4E;13002D321C14175B63615152656D77;140A11130E0316080147546C433C6F6A3D5F;150B20070D03190801563D60;1636032C2F104541733F;17252631031E1F5758727B4B3E;1804220362463C44;190C04072128291D334F50645D;1A09022306055348554259;1B3502120D0F24060568695A;1C2E27342A495C403C;1D184A5E6B3E66;1E0A381A1B2B15014C4D4E;1F0B2D321C14175B63615152657F;20363711130E0316080147546C433C6A3F3D5F;2120070D03190801563D60;2204032C2F104541;230C042526311E1F57584B3E;2409220562463C44;2535072128291D334F50645D;26022306055348554259;270212300F24060568695A;280A2E27342A495C403C6F;290B184A5E6B3E66;2A361A1B2B15014C4D4E3F81;2B2D321C14175B6361515265678074;2C0411130E03160847546C433C6A3D5F;2D000C0420070D190801566E3D60;2E09002C2F104541;2F35002526311E1F57584B3E;300022056246703C44;3100072128291D334F50645D676D;320A02230605534855426759;330B02120D0F2406056869755A;34362E27342A495C403C3F;35184A5E6B3E6676;36041A1B2B154C4D4E81;370C042D321C14175B6361515265677774;380911130E16080147546C433C6A3D675F;393520070D190801563D60;3A2C2F104541;3B2526311E1F5758704B3E87;",
        ";00001D2F10575868694F503C;0100122B1F495C5564;0209000207222829140605655D44;03000216063305474C4D4E51526A4B3F;04000C042E300F193C6159;0504182C43403E5A;06271A1E2A014A5E6B6C5B6342;070B2D1B1366;080A112526321C0815013C3D;0920032308170153546246413D;0A07210D310324565F;0B0E033448453E60;0C091D2F1005575868694F50717B3C6D;0D122B1F495C553F;0E020C04072228291406655D44;0F000204160633474C4D4E51526A4B;10002E300F193C6159;110B00182C43403E5A;120A00271A1E2A014A5E6B6C5B6342;13002D1B13036D66;14112526321C030815013C6F3D;1520032308170153546246413D;160907210D31032456735F;170E344845727B3F3E60;180C041D2F10575868694F503C;1904122B1F495C5564;1A0207222829140605655D44;1B0B0216063305474C4D4E51526A4B;1C0A2E300F193C6159;1D182C43403E5A;1E38271A1E2A014A5E6B6C5B6342;1F2D1B130366;2009112526321C030815013C3D;21202308170153546246413F3D;220C0407210D3103565F;23040E3448453E60;241D2F1005575868694F503C;250B122B1F495C5564;260A0207222829140605655D44;270216063305474C4D4E51526A4B;282E300F193C6F616E59;29182C43403E5A;2A09271A1E2A014A5E6B6C5B63427988;2B372D1B133F6766;2C0C04112526321C0308153C3D;2D0004202308170153546246413D;2E0007210D3124565F;2F0B000E3448453E60;300A001D2F1005575868694F50703C89;3100122B1F495C5564676D;320207222829140605655D6744;330216063305474C4D4E7551526A4B;34092E300F193C6159;35182C43403F3E5A;360904271A1E2A4A5E6B6C5B634278;37042D1B136766;38112526321C0815013C3D67;390B202308170153546246413D;3A0A07210D3124566E5F;3B0E03344845703E60;",
        ";003509001E2F554C4D4E453C51525D5F;010057586C646160;0200020E06100543;0300020721282923061F0565;0400042E2224533C7344;05360B04182526300F34335B633F3E74;060A1A13016246404B59;070C2D2B4A5E6B5A;0827111B0314082A0148413C3D;0920321C310316080148413C3D;0A35090319154754495C42;0B12070D1D2C174F50563E;0C1E2F05554C4D4E45717B3C51525D6D5F;0D57586C646160;0E02040E061043;0F360B0002040721282923061F653F;100A002E2224533C44;11000C182526300F34335B633E;12001A1303016246404B59;13002D032B4A5E6B6D5A;14350927111B0314082A0148413C6F3D;1520321C310316080168696A3D66;1619154754495C426E;1712070D1D2C174F5056727B3E;18041E2F554C4D4E453C51525D5F;19360B0457586C64613F60;1A0A020E06100543;1B020C0721282923061F0565;1C2E2224533C44;1D182526300F34335B633E;1E3509381A1303016246404B59;1F2D032B4A5E6B5A;2027111B14082A0148413C3D;2120321C3116080168696A3D66;22040319154754495C42;23360B0412070D1D2C174F50563F3E;240A1E2F05554C4D4E453C51525D5F;250C57586C646160;26020E06100543;27020721282923061F0565;2835092E2224533C6F44;29182526300F34335B633E;2A1A13016246404B5982;2B2D2B4A5E6B675A76;2C0427111B0314082A48413C3D;2D360B000420321C3116080168696A3F3D66;2E0A0019154754495C42;2F000C12070D1D2C174F50563E;30001E2F05554C4D4E45703C51525D5F;310057586C6461676D608E;323509020E0610054367;33020721282923061F057565;342E2224533C6E44;35182526300F34335B633E7974;3637041A13036246404B5982;37360B042D2B4A5E6B3F675A76;380A27111B14082A0148413C3D67;390C20321C3116080168696A3D66;3A0319154754495C42;3B12070D1D2C174F5056703E;",
        ";0000302007210D341556;01000217455D;020A0025262B2F060557586C5F;030B001406056246603C8F;0436000207282916105B6364656A;0537130E191F47483E;0622300F2C0168693F44;07021E33495C40413C;08090C04184A5E423D59;093504121A1B0308014C4D4E51524B3D5A;0A02272D321C1D232A4F507E61;0B1124535455433E66;0C0A2E2007210D341505566D;0D0B0217455D;0E3625262B2F0657586C;0F00140662463C4260;10000207282916105B6364656A3F79;1100130E191F47483E;1209350C0422300F032C01686944;1335000204031E33495C40413C6D;1418310308014A5E6B3D59;15121A1B0308014C4D4E51524B3D5A;160A02272D321C1D232A4F507E61;170B1124535455433C6F6E3E66;18362E2007210D341556;190217455D;1A25262B060557586C3F5F;1B14060562463C4260;1C09020C0407282916105B6364656A;1D3504130E03191F47483E;1E22300F032C01686944;1F02031E495C40413C;200A183108014A5E6B3D59;210B121A1B08014C4D4E51524B3D5A;223602272D321C1D232A4F507E61;231124535455433C3E66;242E2007210D34150556717C3F;25021745735D;26090C0425262B2F060557586C5F;27350414060562463C4260;280207282916105B6364656A74;29130E03191F47483E;2A0A22300F2C01686944;2B0B021E33495C40413C6F67;2C36381831034A5E6B3D59;2D00121A1B08014C4D4E51524B3D5A;2E0002272D321C1D232A4F507E613F;2F00112453545543727C3C3E66;3009000C042E2007210D34150556;313500020417455D676D;3225262B2F060557586C70675F;331406056246703C426084;340A0207282916105B6364656A;350B130E191F47486E3E;363622300F032C7544;37021E33495C40413C67;38183108014A5E6B3F3D675976;39121A1B08014C4D4E51524B3D5A;3A09020C04272D321C1D232A4F507E61;3B35041124535455433C3E66;",
        ";000A002E27202C2A475462464B;010B0002070D1E5666;02002F06150548456E5D;0300061705575868695B633C;040002130323495C645F;0507212829249060;0609341001534C4D4E415152;070212300F31031F3C61423F;080418220E032B080143403D44;090C041A1D14080833014A5E6B6C4F503D;0A0A022D1B16556A59;0B0B112526321C193C653E5A;0C2E27202C2A05475462464B6D;0D02070D1E5666;0E2F061548455D;0F000617575868695B633C85;10090002371323495C645F;11000721282903243F3E60;12000403341001534C4D4E415152;1300020C0412300F31031F3C61426D;140A18220E032B080143403D44;150B1A1D140833014A5E6B6C4F503D;16022D1B16556A59;17112526321C193C6F653E5A;182E27202C2A475462464B;1902070D1E5666;1A092F06150548455D;1B061705575868695B633C3F79;1C0204130323495C645F;1D0C040721282903243E60;1E0A03341001534C4D4E415152;1F0B0227300F311F3C6142;2018220E2B080143406E3D44;211A1D140833014A5E6B6C4F503D;22022D1B16556A59;23112526321C193C653E5A;24092E27202C2A0547546246717C4B;2502070D1E56733F66;26042F06150548455D;270C04061705575868695B633C;280A02130323495C645F;290B07212829243E60;2A341001534C4D4E415152;2B0212300F311F3C6F614267;2C3818220E032B0843403D44;2D001A1D140833014A5E6B5B4F503D78;2E0900022D1B16556A59;2F00112526321C19727C3C653F3E5A;3000042E27202C2A05475462464B;3100020C04070D1E56676D66;320A2F0615054845705D67;330B061705575868695B63703C74;34021323495C645F;3507212829243E60;36033410534C4D4E41755152;370212300F311F3C614267;380918220E2B080143403D6744;391A1D140833014A5E6B6C4F503F3D76;3A02042D1B16556A59;3B0C04112526321C193C653E5A;",
        ";00002E20391C246869655D59;010002345354495C5A;023509002707210D062A055B6356515277;0300132B06054C4D4E453C66;04000203142F1557586473614B3F;0512161743416A3E;060C072829310319015F;07360B02032C476C3C6E60;080A04182526300F1D1E0810014F503D;09041A081F01556246403D;0A022D224A5E6B4486;0B111B0E2333483C423E;0C35092E20321C24056869655D6D59;0D02345354495C5A;0E2707210D062A5B635651523F77;0F00132B064C4D4E453C66;1000020C03142F15575864614B;11360B001203161743416A3E;120A0004072829310319015F;13000204032C476C3C6D60;14182526300F1D1E0810014F503D;151A081F01556246403D;163509022D224A5E6B44;17111B0E2333483C6F423E;182E20321C246869655D3F59;1902345354495C5A;1A0C2707210D062A055B635651527F;1B360B3713032B06054C4D4E453C66;1C0A020403142F15575864614B;1D041203161743416A3E;1E0728293119015F;1F022C476C3C60;203509182526300F1D1E08104F503D;211A081F01556246403D;22022D224A5E6B3F447891;23111B0E2333483C423E;240C2E20321C24056869717C655D59;25360B021C5354495C6E5A;260A042707210D062A055B6356515280;270413032B06054C4D4E453C66;2802142F15575864614B;2912161743416A3E;2A35090728293119015F;2B022C476C3C6F6760;2C38182526300F1D1E08104F503F3D;2D001A081F01556246403D;2E0002092D224A5E6B4476;2F360B00111B0E233348727C3C423E;300A00042E20321C24056869655D59;31000204345354495C676D5A;322707210D062A055B6356705152677774;33132B06054C4D4E45703C66;34350902142F15575864614B;3512161743416A3E;36072829310319753F5F;37022C476C3C6760;380C182526300F1D1E0810014F503D67;39360B1A081F01556246403D;3A0A02042D224A5E6B44;3B04111B0E2333483C423E;",
        ";00090038041A221B194C4D4E44;0135000C042D321C2C335B6361655D77;02002E11130E1E06054754433C59;03001220070D0605565A;0400272F2A454142;050B252631032357583E66;06360A0324150162463C;07072128291D34174F50644B;080208015348553F3D5F;0902300F2B080168693D60;0A09041410495C403C6F;0B35090418161F4A5E6B6C5152403E;0C1A221B19054C4D4E6D44;0D2D321C2C335B6361655D77;0E2E11130E1E064754433C6E59;0F0B351220070D0306565A;10360A0027032F2A454142;1100252631032357583E66;12000324150162463C3F;1300072128291D34174F50644B6D;1409020408015348553D5F;1535020C04300F2B080168693D60;161410495C403C;1718161F4A5E6B6C51526A3E;181A221B194C4D4E4481;190B0A2E11130E031E06054754433C59;1A360A2E11130E031E06054754433C59;1B1220070D030605565A;1C27032F2A454173423F;1D252631032357583E66;1E090424150162463C;1F350C04072128291D34174F50644B;200208015348553D5F;2102300F2B080168693D60;221410495C403C92;230B18161F4A5E6B6C51526A3E7893;24360A1A221B19054C4D4E44;252D321C2C335B6361655D7F;26372E11130E031E06054754433C3F59;271220070D030605565A;280904272F2A454142;29350C042526312357583E66;2A2415016246703C;2B072128291D34174F50644B67;2C02085348556E3D5F;2D090002300F2B080168693D60;2E360A001410495C403C;2F0018161F4A5E6B6C51526A3E;30001A221B19054C4D4E717D3F4481;31002D321C2C335B6361655D676D8074;3209042E11130E1E06054754433C6F6759;33350C042720070D0605565A;34272F2A454142;35252631235758703E6687;36241562463C;370B072128291D34174F50644B67;38360A023A015348553D675F;3902300F2B08016869753D60;3A1410495C403C3F;3B18161F4A5E6B6C727D51526A3E76;",
        ";0000380C041A23104A5E6B5B63;010004122D1B13241F838A;020A002E11252622321C3406053C5D44;030B00200306330553544641;040007210D312B5659;050E031448453E5A;060E1D162F2A01575868694F503C6A;0719495C556466;0809020728292C081501515242653D;09021E081701474C4D4E3F3D;0A0C04300F3C6F614B5F;0B041843403E60;0C0A1A2310054A5E6B5B636D;0D0B122D1B1303241F838A94;0E2E11252622321C34063C5D44;0F002003063353546C624641;100007210D31032B5659;11000E031448453E5A;120900271D162F2A01575868694F503C6A;130019495C55643F6D66;14020C040728292C081501515242653D;1502041E081701474C4D4E3D;160A300F3C614B5F;170B1843403E60;181A23104A456B5B6378;19122D1B1303241F9583;1A2E11252622321C033406053C5D44;1B200306330553546C6246416E;1C0907210D31032B567359;1D0E1448453F3E5A;1E0C04271D163B2A01575868694F503C6A;1F0419495C556466;200A020728292C081501515242653D;210B021E081701474C4D4E3D;22300F3C614B5F;231843403E60;241A2310054A5E425B63;25122D1B1303241F;26092E11252622321C033406053C5D44;272006330553546C6246413F;280C0407210D312B5659;29040E1448453E5A;2A0A271D162F2A01575868694F50703C6A89;2B0B19495C55646766;2C020728292C0815515242653D;2D00021E081701474C4D4E3D;2E00300F3C614B5F;2F001843403E60;3009001A2310054A5E6B5B63717D7988;310037122D1B13241F3F676D;320C042E11252622321C3406053C6F5D6744;33042006330553546C624641;340A07210D312B5659;350B0E03144845703E5A;36271D162F2A575868694F503C6A;3719495C55646766;38020728292C081501515242653D67;39021E081701474C4D4E756E3D;3A09300F3C614B5F;3B184340727D3F3E60;",
        ";000A003837041A1316624640425D6A5F;01360B00042D194A5E6B4B60;020009111B032C06100548413C;030020321C310310061F056869;0400224754495C7344;05070D1D334F505651523F3E;063509232F01554C4D4E453C59;070C24575864615A;0802270E34082A01433D;09020721282908016E653D66;0A0A042B15536C3C6F;0B360B0412182526300F14175B633E;0C1A13031605624640425D6A6D5F;0D2D03194A5E6B4B60;0E2E111B33061048413C;0F0020321C31031E061F68693F;1035090022034754495C44;11000C070D1D334F505651523E;1200232F01554C4D4E453C59;130024575864616D5A;140A0204270E0F082A01433D;15360B0204072128290801653D66;162B15536C3C;17121825260D0F14175B633E;181A1316624640425D6A5F82;192D03194A5E6B4B3F60;1A35092E111B032C061048413C;1B0C20321C31031E061F056869;1C224754495C44;1D07121D334F505651523E;1E0A04232F01554C4D4E453C59;1F360B0424575864615A;2002270E34082A01433D;2102072128290801653D66;222B15536C3C;2312182526300F14175B633F3E;2435091A13031605624640425D6A5F;250C2D03194A5E6B4B60;262E111B2C06100548413C;2720321C311E061F056869;280A04224746495C44;29360B04070D1D334F505651523E;2A232F01554C4D4E45703C59;2B2457586461675A96;2C02270E34082A433D;2D0002072128290801653F3D66;2E3509002B15536C3C;2F000C12182526300F14175B633E;30001A1316624640717D425D6A5F82;31002D194A5E6B4B676D6076;320A042E111B2C06100548413C6F67;33360B0420321C311E061F0568696E;3422034754495C44;35070D1D334F50567051523E;36232F554C4D4E453C59;3724575864613F675A;38350902270E34082A01433D67;39020C07212829080175653D66;3A2B15536C3C;3B12182526300F14175B63727D3E7974;"
    )

    /** 地支对应天神偏移下标  */
    val ZHI_TIAN_SHEN_OFFSET: Map<String, Int> = mutableMapOf<String, Int>().apply {
            put("子", 4)
            put("丑", 2)
            put("寅", 0)
            put("卯", 10)
            put("辰", 8)
            put("巳", 6)
            put("午", 4)
            put("未", 2)
            put("申", 0)
            put("酉", 10)
            put("戌", 8)
            put("亥", 6)
    }

    /** 天神类型：黄道，黑道  */
    val TIAN_SHEN_TYPE: Map<String, String> = mutableMapOf<String, String>().apply {
            put("青龙", "黄道")
            put("明堂", "黄道")
            put("金匮", "黄道")
            put("天德", "黄道")
            put("玉堂", "黄道")
            put("司命", "黄道")

            put("天刑", "黑道")
            put("朱雀", "黑道")
            put("白虎", "黑道")
            put("天牢", "黑道")
            put("玄武", "黑道")
            put("勾陈", "黑道")
    }

    /** 天神类型吉凶  */
    val TIAN_SHEN_TYPE_LUCK: Map<String, String> = mutableMapOf<String, String>().apply {
            put("黄道", "吉")
            put("黑道", "凶")
    }

    /** 彭祖百忌.天干  */
    val PENGZU_GAN: Array<String> = arrayOf<String>(
        "",
        "甲不开仓财物耗散",
        "乙不栽植千株不长",
        "丙不修灶必见灾殃",
        "丁不剃头头必生疮",
        "戊不受田田主不祥",
        "己不破券二比并亡",
        "庚不经络织机虚张",
        "辛不合酱主人不尝",
        "壬不泱水更难提防",
        "癸不词讼理弱敌强"
    )

    /** 彭祖百忌.地支  */
    val PENGZU_ZHI: Array<String> = arrayOf<String>(
        "",
        "子不问卜自惹祸殃",
        "丑不冠带主不还乡",
        "寅不祭祀神鬼不尝",
        "卯不穿井水泉不香",
        "辰不哭泣必主重丧",
        "巳不远行财物伏藏",
        "午不苫盖屋主更张",
        "未不服药毒气入肠",
        "申不安床鬼祟入房",
        "酉不会客醉坐颠狂",
        "戌不吃犬作怪上床",
        "亥不嫁娶不利新郎"
    )

    /** 数字  */
    val NUMBER: Array<String> =
        arrayOf<String>("〇", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二")

    /** 月  */
    val MONTH: Array<String> =
        arrayOf<String>("", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "冬", "腊")

    /** 季节  */
    val SEASON: Array<String> = arrayOf<String>(
        "",
        "孟春",
        "仲春",
        "季春",
        "孟夏",
        "仲夏",
        "季夏",
        "孟秋",
        "仲秋",
        "季秋",
        "孟冬",
        "仲冬",
        "季冬"
    )

    /** 生肖  */
    val SHENGXIAO: Array<String> =
        arrayOf<String>("", "鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪")

    /** 日  */
    val DAY: Array<String> = arrayOf<String>(
        "",
        "初一",
        "初二",
        "初三",
        "初四",
        "初五",
        "初六",
        "初七",
        "初八",
        "初九",
        "初十",
        "十一",
        "十二",
        "十三",
        "十四",
        "十五",
        "十六",
        "十七",
        "十八",
        "十九",
        "二十",
        "廿一",
        "廿二",
        "廿三",
        "廿四",
        "廿五",
        "廿六",
        "廿七",
        "廿八",
        "廿九",
        "三十"
    )

    /** 月相，朔月也叫新月，望月也叫满月  */
    val YUE_XIANG: Array<String> = arrayOf<String>(
        "",
        "朔",
        "既朔",
        "蛾眉新",
        "蛾眉新",
        "蛾眉",
        "夕",
        "上弦",
        "上弦",
        "九夜",
        "宵",
        "宵",
        "宵",
        "渐盈凸",
        "小望",
        "望",
        "既望",
        "立待",
        "居待",
        "寝待",
        "更待",
        "渐亏凸",
        "下弦",
        "下弦",
        "有明",
        "有明",
        "蛾眉残",
        "蛾眉残",
        "残",
        "晓",
        "晦"
    )

    /** 农历日期对应的节日  */
    val FESTIVAL: Map<String, String> = mutableMapOf<String, String>().apply {
            put("1-1", "春节")
            put("1-15", "元宵节")
            put("2-2", "龙头节")
            put("5-5", "端午节")
            put("7-7", "七夕节")
            put("8-15", "中秋节")
            put("9-9", "重阳节")
            put("12-8", "腊八节")
    }

    /** 传统节日  */
    val OTHER_FESTIVAL: Map<String, List<String>> = mutableMapOf<String, List<String>>().apply {
            put("1-4", listOf( "接神日"))
            put("1-5", listOf( "隔开日"))
            put("1-7", listOf( "人日"))
            put("1-8", listOf("谷日", "顺星节"))
            put("1-9", listOf( "天日"))
            put("1-10", listOf( "地日"))
            put("1-20", listOf( "天穿节"))
            put("1-25", listOf( "填仓节"))
            put("1-30", listOf( "正月晦"))
            put("2-1", listOf( "中和节"))
            put("2-2", listOf( "社日节"))
            put("3-3", listOf( "上巳节"))
            put("5-20", listOf( "分龙节"))
            put("5-25", listOf( "会龙节"))
            put("6-6", listOf( "天贶节"))
            put("6-24", listOf( "观莲节"))
            put("6-25", listOf( "五谷母节"))
            put("7-15", listOf( "中元节"))
            put("7-22", listOf( "财神节"))
            put("7-29", listOf( "地藏节"))
            put("8-1", listOf( "天灸日"))
            put("10-1", listOf( "寒衣节"))
            put("10-10", listOf( "十成节"))
            put("10-15", listOf( "下元节"))
            put("12-7", listOf( "驱傩日"))
            put("12-16", listOf( "尾牙"))
            put("12-24", listOf( "祭灶日"))
    }

    /** 28星宿对照表，地支+星期  */
    val XIU: Map<String, String> = mutableMapOf<String, String>().apply {
            put("申1", "毕")
            put("申2", "翼")
            put("申3", "箕")
            put("申4", "奎")
            put("申5", "鬼")
            put("申6", "氐")
            put("申0", "虚")

            put("子1", "毕")
            put("子2", "翼")
            put("子3", "箕")
            put("子4", "奎")
            put("子5", "鬼")
            put("子6", "氐")
            put("子0", "虚")

            put("辰1", "毕")
            put("辰2", "翼")
            put("辰3", "箕")
            put("辰4", "奎")
            put("辰5", "鬼")
            put("辰6", "氐")
            put("辰0", "虚")

            put("巳1", "危")
            put("巳2", "觜")
            put("巳3", "轸")
            put("巳4", "斗")
            put("巳5", "娄")
            put("巳6", "柳")
            put("巳0", "房")

            put("酉1", "危")
            put("酉2", "觜")
            put("酉3", "轸")
            put("酉4", "斗")
            put("酉5", "娄")
            put("酉6", "柳")
            put("酉0", "房")

            put("丑1", "危")
            put("丑2", "觜")
            put("丑3", "轸")
            put("丑4", "斗")
            put("丑5", "娄")
            put("丑6", "柳")
            put("丑0", "房")

            put("寅1", "心")
            put("寅2", "室")
            put("寅3", "参")
            put("寅4", "角")
            put("寅5", "牛")
            put("寅6", "胃")
            put("寅0", "星")

            put("午1", "心")
            put("午2", "室")
            put("午3", "参")
            put("午4", "角")
            put("午5", "牛")
            put("午6", "胃")
            put("午0", "星")

            put("戌1", "心")
            put("戌2", "室")
            put("戌3", "参")
            put("戌4", "角")
            put("戌5", "牛")
            put("戌6", "胃")
            put("戌0", "星")

            put("亥1", "张")
            put("亥2", "尾")
            put("亥3", "壁")
            put("亥4", "井")
            put("亥5", "亢")
            put("亥6", "女")
            put("亥0", "昴")

            put("卯1", "张")
            put("卯2", "尾")
            put("卯3", "壁")
            put("卯4", "井")
            put("卯5", "亢")
            put("卯6", "女")
            put("卯0", "昴")

            put("未1", "张")
            put("未2", "尾")
            put("未3", "壁")
            put("未4", "井")
            put("未5", "亢")
            put("未6", "女")
            put("未0", "昴")
    }

    /** 星宿对应吉凶  */
    val XIU_LUCK: Map<String, String> = mutableMapOf<String, String>().apply {
            put("角", "吉")
            put("亢", "凶")
            put("氐", "凶")
            put("房", "吉")
            put("心", "凶")
            put("尾", "吉")
            put("箕", "吉")
            put("斗", "吉")
            put("牛", "凶")
            put("女", "凶")
            put("虚", "凶")
            put("危", "凶")
            put("室", "吉")
            put("壁", "吉")
            put("奎", "凶")
            put("娄", "吉")
            put("胃", "吉")
            put("昴", "凶")
            put("毕", "吉")
            put("觜", "凶")
            put("参", "吉")
            put("井", "吉")
            put("鬼", "凶")
            put("柳", "凶")
            put("星", "凶")
            put("张", "吉")
            put("翼", "凶")
            put("轸", "吉")
    }

    /** 星宿歌诀  */
    val XIU_SONG: Map<String, String> = mutableMapOf<String, String>().apply {
            put(
                "角",
                "角星造作主荣昌，外进田财及女郎，嫁娶婚姻出贵子，文人及第见君王，惟有埋葬不可用，三年之后主瘟疫，起工修筑坟基地，堂前立见主人凶。"
            )
            put(
                "亢",
                "亢星造作长房当，十日之中主有殃，田地消磨官失职，接运定是虎狼伤，嫁娶婚姻用此日，儿孙新妇守空房，埋葬若还用此日，当时害祸主重伤。"
            )
            put(
                "氐",
                "氐星造作主灾凶，费尽田园仓库空，埋葬不可用此日，悬绳吊颈祸重重，若是婚姻离别散，夜招浪子入房中，行船必定遭沉没，更生聋哑子孙穷。"
            )
            put(
                "房",
                "房星造作田园进，钱财牛马遍山岗，更招外处田庄宅，荣华富贵福禄康，埋葬若然用此日，高官进职拜君王，嫁娶嫦娥至月殿，三年抱子至朝堂。"
            )
            put(
                "心",
                "心星造作大为凶，更遭刑讼狱囚中，忤逆官非宅产退，埋葬卒暴死相从，婚姻若是用此日，子死儿亡泪满胸，三年之内连遭祸，事事教君没始终。"
            )
            put(
                "尾",
                "尾星造作主天恩，富贵荣华福禄增，招财进宝兴家宅，和合婚姻贵子孙，埋葬若能依此日，男清女正子孙兴，开门放水招田宅，代代公侯远播名。"
            )
            put(
                "箕",
                "箕星造作主高强，岁岁年年大吉昌，埋葬修坟大吉利，田蚕牛马遍山岗，开门放水招田宅，箧满金银谷满仓，福荫高官加禄位，六亲丰禄乐安康。"
            )
            put(
                "斗",
                "斗星造作主招财，文武官员位鼎台，田宅家财千万进，坟堂修筑贵富来，开门放水招牛马，旺蚕男女主和谐，遇此吉宿来照护，时支福庆永无灾。"
            )
            put(
                "牛",
                "牛星造作主灾危，九横三灾不可推，家宅不安人口退，田蚕不利主人衰，嫁娶婚姻皆自损，金银财谷渐无之，若是开门并放水，牛猪羊马亦伤悲。"
            )
            put(
                "女",
                "女星造作损婆娘，兄弟相嫌似虎狼，埋葬生灾逢鬼怪，颠邪疾病主瘟惶，为事遭官财失散，泻利留连不可当，开门放水用此日，全家财散主离乡。"
            )
            put(
                "虚",
                "虚星造作主灾殃，男女孤眠不一双，内乱风声无礼节，儿孙媳妇伴人床，开门放水遭灾祸，虎咬蛇伤又卒亡，三三五五连年病，家破人亡不可当。"
            )
            put(
                "危",
                "危星不可造高楼，自遭刑吊见血光，三年孩子遭水厄，后生出外永不还，埋葬若还逢此日，周年百日取高堂，三年两载一悲伤，开门放水到官堂。"
            )
            put(
                "室",
                "室星修造进田牛，儿孙代代近王侯，家贵荣华天上至，寿如彭祖八千秋，开门放水招财帛，和合婚姻生贵儿，埋葬若能依此日，门庭兴旺福无休。"
            )
            put(
                "壁",
                "壁星造作主增财，丝蚕大熟福滔天，奴婢自来人口进，开门放水出英贤，埋葬招财官品进，家中诸事乐陶然，婚姻吉利主贵子，早播名誉著祖鞭。"
            )
            put(
                "奎",
                "奎星造作得祯祥，家内荣和大吉昌，若是埋葬阴卒死，当年定主两三伤，看看军令刑伤到，重重官事主瘟惶，开门放水遭灾祸，三年两次损儿郎。"
            )
            put(
                "娄",
                "娄星修造起门庭，财旺家和事事兴，外进钱财百日进，一家兄弟播高名，婚姻进益生贵子，玉帛金银箱满盈，放水开门皆吉利，男荣女贵寿康宁。"
            )
            put(
                "胃",
                "胃星造作事如何，家贵荣华喜气多，埋葬贵临官禄位，夫妇齐眉永保康，婚姻遇此家富贵，三灾九祸不逢他，从此门前多吉庆，儿孙代代拜金阶。"
            )
            put(
                "昴",
                "昴星造作进田牛，埋葬官灾不得休，重丧二日三人死，尽卖田园不记增，开门放水招灾祸，三岁孩儿白了头，婚姻不可逢此日，死别生离是可愁。"
            )
            put(
                "毕",
                "毕星造作主光前，买得田园有余钱，埋葬此日添官职，田蚕大熟永丰年，开门放水多吉庆，合家人口得安然，婚姻若得逢此日，生得孩儿福寿全。"
            )
            put(
                "觜",
                "觜星造作有徒刑，三年必定主伶丁，埋葬卒死多因此，取定寅年使杀人，三丧不止皆由此，一人药毒二人身，家门田地皆退败，仓库金银化作尘。"
            )
            put(
                "参",
                "参星造作旺人家，文星照耀大光华，只因造作田财旺，埋葬招疾哭黄沙，开门放水加官职，房房子孙见田加，婚姻许遁遭刑克，男女朝开幕落花。"
            )
            put(
                "井",
                "井星造作旺蚕田，金榜题名第一光，埋葬须防惊卒死，狂颠风疾入黄泉，开门放水招财帛，牛马猪羊旺莫言，贵人田塘来入宅，儿孙兴旺有余钱。"
            )
            put(
                "鬼",
                "鬼星起造卒人亡，堂前不见主人郎，埋葬此日官禄至，儿孙代代近君王，开门放水须伤死，嫁娶夫妻不久长，修土筑墙伤产女，手扶双女泪汪汪。"
            )
            put(
                "柳",
                "柳星造作主遭官，昼夜偷闭不暂安，埋葬瘟惶多疾病，田园退尽守冬寒，开门放水遭聋瞎，腰驼背曲似弓弯，更有棒刑宜谨慎，妇人随客走盘桓。"
            )
            put(
                "星",
                "星宿日好造新房，进职加官近帝王，不可埋葬并放水，凶星临位女人亡，生离死别无心恋，要自归休别嫁郎，孔子九曲殊难度，放水开门天命伤。"
            )
            put(
                "张",
                "张星日好造龙轩，年年并见进庄田，埋葬不久升官职，代代为官近帝前，开门放水招财帛，婚姻和合福绵绵，田蚕人满仓库满，百般顺意自安然。"
            )
            put(
                "翼",
                "翼星不利架高堂，三年二载见瘟惶，埋葬若还逢此日，子孙必定走他乡，婚姻此日不宜利，归家定是不相当，开门放水家须破，少女恋花贪外郎。"
            )
            put(
                "轸",
                "轸星临水造龙宫，代代为官受皇封，富贵荣华增寿禄，库满仓盈自昌隆，埋葬文昌来照助，宅舍安宁不见凶，更有为官沾帝宠，婚姻龙子入龙宫。"
            )
    }

    /** 兽  */
    val SHOU: Map<String, String> = mutableMapOf<String, String>().apply {
            put("东", "青龙")
            put("南", "朱雀")
            put("西", "白虎")
            put("北", "玄武")
    }

    /** 地支相冲（子午相冲，丑未相冲，寅申相冲，辰戌相冲，卯酉相冲，巳亥相冲），由于地支对应十二生肖，也就对应了生肖相冲  */
    val CHONG: Array<String> = arrayOf<String>("午", "未", "申", "酉", "戌", "亥", "子", "丑", "寅", "卯", "辰", "巳")

    /** 天干相冲之无情之克（阳克阳，阴克阴）  */
    val CHONG_GAN: Array<String> = arrayOf<String>("戊", "己", "庚", "辛", "壬", "癸", "甲", "乙", "丙", "丁")

    /** 天干相冲之有情之克（阳克阴，阴克阳）  */
    val CHONG_GAN_TIE: Array<String> = arrayOf<String>("己", "戊", "辛", "庚", "癸", "壬", "乙", "甲", "丁", "丙")

    /** 天干四冲（无情之克中克得最严重的4个）  */
    val CHONG_GAN_4: Array<String> = arrayOf<String>("庚", "辛", "壬", "癸", "", "", "甲", "乙", "丙", "丁")

    /** 天干五合（有情之克中最有情的5个，甲己合，乙庚合，丙辛合，丁壬合，戊癸合）  */
    val HE_GAN_5: Array<String> = arrayOf<String>("己", "庚", "辛", "壬", "癸", "甲", "乙", "丙", "丁", "戊")

    /** 地支六合（子丑合，寅亥合，卯戌合，辰酉合，巳申合，午未合）  */
    val HE_ZHI_6: Array<String> =
        arrayOf<String>("丑", "子", "亥", "戌", "酉", "申", "未", "午", "巳", "辰", "卯", "寅")

    /** 煞（逢巳日、酉日、丑日必煞东；亥日、卯日、未日必煞西；申日、子日、辰日必煞南；寅日、午日、戌日必煞北）  */
    val SHA: Map<String, String> = mutableMapOf<String, String>().apply {
            put("子", "南")
            put("丑", "东")
            put("寅", "北")
            put("卯", "西")
            put("辰", "南")
            put("巳", "东")
            put("午", "北")
            put("未", "西")
            put("申", "南")
            put("酉", "东")
            put("戌", "北")
            put("亥", "西")
    }

    /** 方位  */
    val POSITION_DESC: Map<String, String> = mutableMapOf<String, String>().apply {
            put("坎", "正北")
            put("艮", "东北")
            put("震", "正东")
            put("巽", "东南")
            put("离", "正南")
            put("坤", "西南")
            put("兑", "正西")
            put("乾", "西北")
            put("中", "中宫")
    }

    /** 宫  */
    val GONG: Map<String, String> = mutableMapOf<String, String>().apply {
            put("角", "东")
            put("井", "南")
            put("奎", "西")
            put("斗", "北")
            put("亢", "东")
            put("鬼", "南")
            put("娄", "西")
            put("牛", "北")
            put("氐", "东")
            put("柳", "南")
            put("胃", "西")
            put("女", "北")
            put("房", "东")
            put("星", "南")
            put("昴", "西")
            put("虚", "北")
            put("心", "东")
            put("张", "南")
            put("毕", "西")
            put("危", "北")
            put("尾", "东")
            put("翼", "南")
            put("觜", "西")
            put("室", "北")
            put("箕", "东")
            put("轸", "南")
            put("参", "西")
            put("壁", "北")
    }

    /** 政  */
    val ZHENG: Map<String, String> = mutableMapOf<String, String>().apply {
            put("角", "木")
            put("井", "木")
            put("奎", "木")
            put("斗", "木")
            put("亢", "金")
            put("鬼", "金")
            put("娄", "金")
            put("牛", "金")
            put("氐", "土")
            put("柳", "土")
            put("胃", "土")
            put("女", "土")
            put("房", "日")
            put("星", "日")
            put("昴", "日")
            put("虚", "日")
            put("心", "月")
            put("张", "月")
            put("毕", "月")
            put("危", "月")
            put("尾", "火")
            put("翼", "火")
            put("觜", "火")
            put("室", "火")
            put("箕", "水")
            put("轸", "水")
            put("参", "水")
            put("壁", "水")
    }

    /** 动物  */
    val ANIMAL: Map<String, String> = mutableMapOf<String, String>().apply {
            put("角", "蛟")
            put("斗", "獬")
            put("奎", "狼")
            put("井", "犴")
            put("亢", "龙")
            put("牛", "牛")
            put("娄", "狗")
            put("鬼", "羊")
            put("女", "蝠")
            put("氐", "貉")
            put("胃", "彘")
            put("柳", "獐")
            put("房", "兔")
            put("虚", "鼠")
            put("昴", "鸡")
            put("星", "马")
            put("心", "狐")
            put("危", "燕")
            put("毕", "乌")
            put("张", "鹿")
            put("尾", "虎")
            put("室", "猪")
            put("觜", "猴")
            put("翼", "蛇")
            put("箕", "豹")
            put("壁", "獝")
            put("参", "猿")
            put("轸", "蚓")
    }

    /** 天干五行  */
    val WU_XING_GAN: Map<String, String> = mutableMapOf<String, String>().apply {
            put("甲", "木")
            put("乙", "木")
            put("丙", "火")
            put("丁", "火")
            put("戊", "土")
            put("己", "土")
            put("庚", "金")
            put("辛", "金")
            put("壬", "水")
            put("癸", "水")
    }

    /** 地支五行  */
    val WU_XING_ZHI: Map<String, String> = mutableMapOf<String, String>().apply {
            put("寅", "木")
            put("卯", "木")
            put("巳", "火")
            put("午", "火")
            put("辰", "土")
            put("丑", "土")
            put("戌", "土")
            put("未", "土")
            put("申", "金")
            put("酉", "金")
            put("亥", "水")
            put("子", "水")
    }

    /** 纳音  */
    val NAYIN: Map<String, String> = mutableMapOf<String, String>().apply {
            put("甲子", "海中金")
            put("甲午", "沙中金")
            put("丙寅", "炉中火")
            put("丙申", "山下火")
            put("戊辰", "大林木")
            put("戊戌", "平地木")
            put("庚午", "路旁土")
            put("庚子", "壁上土")
            put("壬申", "剑锋金")
            put("壬寅", "金箔金")
            put("甲戌", "山头火")
            put("甲辰", "覆灯火")
            put("丙子", "涧下水")
            put("丙午", "天河水")
            put("戊寅", "城头土")
            put("戊申", "大驿土")
            put("庚辰", "白蜡金")
            put("庚戌", "钗钏金")
            put("壬午", "杨柳木")
            put("壬子", "桑柘木")
            put("甲申", "泉中水")
            put("甲寅", "大溪水")
            put("丙戌", "屋上土")
            put("丙辰", "沙中土")
            put("戊子", "霹雳火")
            put("戊午", "天上火")
            put("庚寅", "松柏木")
            put("庚申", "石榴木")
            put("壬辰", "长流水")
            put("壬戌", "大海水")
            put("乙丑", "海中金")
            put("乙未", "沙中金")
            put("丁卯", "炉中火")
            put("丁酉", "山下火")
            put("己巳", "大林木")
            put("己亥", "平地木")
            put("辛未", "路旁土")
            put("辛丑", "壁上土")
            put("癸酉", "剑锋金")
            put("癸卯", "金箔金")
            put("乙亥", "山头火")
            put("乙巳", "覆灯火")
            put("丁丑", "涧下水")
            put("丁未", "天河水")
            put("己卯", "城头土")
            put("己酉", "大驿土")
            put("辛巳", "白蜡金")
            put("辛亥", "钗钏金")
            put("癸未", "杨柳木")
            put("癸丑", "桑柘木")
            put("乙酉", "泉中水")
            put("乙卯", "大溪水")
            put("丁亥", "屋上土")
            put("丁巳", "沙中土")
            put("己丑", "霹雳火")
            put("己未", "天上火")
            put("辛卯", "松柏木")
            put("辛酉", "石榴木")
            put("癸巳", "长流水")
            put("癸亥", "大海水")
    }

    /** 十神，日主+天干为键  */
    val SHI_SHEN: Map<String, String> = mutableMapOf<String, String>().apply {
            put("甲甲", "比肩")
            put("甲乙", "劫财")
            put("甲丙", "食神")
            put("甲丁", "伤官")
            put("甲戊", "偏财")
            put("甲己", "正财")
            put("甲庚", "七杀")
            put("甲辛", "正官")
            put("甲壬", "偏印")
            put("甲癸", "正印")
            put("乙乙", "比肩")
            put("乙甲", "劫财")
            put("乙丁", "食神")
            put("乙丙", "伤官")
            put("乙己", "偏财")
            put("乙戊", "正财")
            put("乙辛", "七杀")
            put("乙庚", "正官")
            put("乙癸", "偏印")
            put("乙壬", "正印")
            put("丙丙", "比肩")
            put("丙丁", "劫财")
            put("丙戊", "食神")
            put("丙己", "伤官")
            put("丙庚", "偏财")
            put("丙辛", "正财")
            put("丙壬", "七杀")
            put("丙癸", "正官")
            put("丙甲", "偏印")
            put("丙乙", "正印")
            put("丁丁", "比肩")
            put("丁丙", "劫财")
            put("丁己", "食神")
            put("丁戊", "伤官")
            put("丁辛", "偏财")
            put("丁庚", "正财")
            put("丁癸", "七杀")
            put("丁壬", "正官")
            put("丁乙", "偏印")
            put("丁甲", "正印")
            put("戊戊", "比肩")
            put("戊己", "劫财")
            put("戊庚", "食神")
            put("戊辛", "伤官")
            put("戊壬", "偏财")
            put("戊癸", "正财")
            put("戊甲", "七杀")
            put("戊乙", "正官")
            put("戊丙", "偏印")
            put("戊丁", "正印")
            put("己己", "比肩")
            put("己戊", "劫财")
            put("己辛", "食神")
            put("己庚", "伤官")
            put("己癸", "偏财")
            put("己壬", "正财")
            put("己乙", "七杀")
            put("己甲", "正官")
            put("己丁", "偏印")
            put("己丙", "正印")
            put("庚庚", "比肩")
            put("庚辛", "劫财")
            put("庚壬", "食神")
            put("庚癸", "伤官")
            put("庚甲", "偏财")
            put("庚乙", "正财")
            put("庚丙", "七杀")
            put("庚丁", "正官")
            put("庚戊", "偏印")
            put("庚己", "正印")
            put("辛辛", "比肩")
            put("辛庚", "劫财")
            put("辛癸", "食神")
            put("辛壬", "伤官")
            put("辛乙", "偏财")
            put("辛甲", "正财")
            put("辛丁", "七杀")
            put("辛丙", "正官")
            put("辛己", "偏印")
            put("辛戊", "正印")
            put("壬壬", "比肩")
            put("壬癸", "劫财")
            put("壬甲", "食神")
            put("壬乙", "伤官")
            put("壬丙", "偏财")
            put("壬丁", "正财")
            put("壬戊", "七杀")
            put("壬己", "正官")
            put("壬庚", "偏印")
            put("壬辛", "正印")
            put("癸癸", "比肩")
            put("癸壬", "劫财")
            put("癸乙", "食神")
            put("癸甲", "伤官")
            put("癸丁", "偏财")
            put("癸丙", "正财")
            put("癸己", "七杀")
            put("癸戊", "正官")
            put("癸辛", "偏印")
            put("癸庚", "正印")
    }

    /** 地支藏干表，分别为主气、余气、杂气  */
    val ZHI_HIDE_GAN: Map<String, List<String>> = mutableMapOf<String, List<String>>().apply {
            put("子", listOf( "癸"))
            put("丑", listOf("己", "癸", "辛"))
            put("寅", listOf("甲", "丙", "戊"))
            put("卯", listOf( "乙"))
            put("辰", listOf("戊", "乙", "癸"))
            put("巳", listOf("丙", "庚", "戊"))
            put("午", listOf("丁", "己"))
            put("未", listOf("己", "丁", "乙"))
            put("申", listOf("庚", "壬", "戊"))
            put("酉", listOf( "辛"))
            put("戌", listOf("戊", "辛", "丁"))
            put("亥", listOf("壬", "甲"))
    }

    /** 禄（甲禄在寅，乙禄在卯，丙戊禄在巳、丁己禄在午、庚禄在申、辛禄在酉、壬禄在亥、癸禄在子）  */
    val LU: Map<String, String> =mutableMapOf<String, String>().apply {
            put("甲", "寅")
            put("乙", "卯")
            put("丙", "巳")
            put("丁", "午")
            put("戊", "巳")
            put("己", "午")
            put("庚", "申")
            put("辛", "酉")
            put("壬", "亥")
            put("癸", "子")

            put("寅", "甲")
            put("卯", "乙")
            put("巳", "丙,戊")
            put("午", "丁,己")
            put("申", "庚")
            put("酉", "辛")
            put("亥", "壬")
            put("子", "癸")
    }

    /**
     * 获取HH:mm时刻的地支序号，非法的时刻返回0
     * @param hm HH:mm时刻
     * @return 地支序号，0到11
     */
    fun getTimeZhiIndex(hm: String): Int {
        var hm = hm
        if (null == hm) {
            return 0
        }
        if (hm.length > 5) {
            hm = hm.substring(0, 5)
        }
        var x = 1
        var i = 1
        while (i < 22) {
            if (hm >= (if (i < 10) "0" else "") + i + ":00" && hm <= (if (i + 1 < 10) "0" else "") + (i + 1) + ":59") {
                return x
            }
            x++
            i += 2
        }
        return 0
    }

    /**
     * 将HH:mm时刻转换为时辰（地支），非法的时刻返回子
     * @param hm HH:mm时刻
     * @return 时辰(地支)，如子
     */
    fun convertTime(hm: String): String {
        return ZHI[getTimeZhiIndex(hm) + 1]
    }

    /**
     * 数字转十六进制
     * @param n 数字
     * @return 十六进制
     */
    private fun hex(n: Int): String {
        var hex: String = (n and 0xFF).toHexString()
        if (hex.length < 2) {
            hex = "0$hex"
        }
        return hex.uppercase()
    }

    /**
     * 获取干支对应的甲子序号
     * @param ganZhi 干支
     * @return 甲子序号
     */
    fun getJiaZiIndex(ganZhi: String): Int {
        return find(ganZhi, JIA_ZI, 0)
    }

    fun find(name: String, names: Array<String>, offset: Int): Int {
        var i = 0
        val j = names.size
        while (i < j) {
            if (names[i] == name) {
                return i + offset
            }
            i++
        }
        return -1
    }

    private fun getDayYiJi(monthGanZhi: String, dayGanZhi: String, pattern: String): List<String> {
        val l= ArrayList<String>()
        val day = hex(getJiaZiIndex(dayGanZhi))
        val month = hex(getJiaZiIndex(monthGanZhi))
//        var matcher: Matcher = Pattern.compile(day + "=(.[^;]+);").matcher(DAY_YI_JI)
//        while (matcher.find()) {
//            val v: String = matcher.group(1)
//            if (Pattern.compile(month + "(:\\w{2})*:").matcher(v).find()) {
//                matcher = Pattern.compile(pattern).matcher(v)
//                if (matcher.find()) {
//                    val s: String = matcher.group(1)
//                    var i = 0
//                    val j = s.length
//                    while (i < j) {
//                        l.add(YI_JI[s.substring(i, i + 2).toInt(16)])
//                        i += 2
//                    }
//                }
//                break
//            }
//        }
        (day + "=(.[^;]+);").toRegex().matcher(DAY_YI_JI){
            val v: String = it.value
            (month + "(:\\w{2})*:").toRegex().matcher(v){
                pattern.toRegex().matcher(v){mat ->
                    val s: String = mat.value
                    var i = 0
                    val j = s.length
                    while (i < j) {
                        l.add(YI_JI[s.substring(i, i + 2).toInt(16)])
                        i += 2
                    }
                }
            }
        }

        if (l.isEmpty()) {
            l.add("无")
        }
        return l
    }

    /**
     * 获取日宜
     * @param monthGanZhi 月干支
     * @param dayGanZhi 日干支
     * @return 宜
     */
    fun getDayYi(monthGanZhi: String, dayGanZhi: String): List<String> {
        return getDayYiJi(monthGanZhi, dayGanZhi, ":(.*),")
    }

    /**
     * 获取日忌
     * @param monthGanZhi 月干支
     * @param dayGanZhi 日干支
     * @return 忌
     */
    fun getDayJi(monthGanZhi: String, dayGanZhi: String): List<String> {
        return getDayYiJi(monthGanZhi, dayGanZhi, ",(.*)")
    }

    /**
     * 获取日吉神
     * @param monthZhiIndex 月地支序号
     * @param dayGanZhi 日干支
     * @return 日吉神
     */
    fun getDayJiShen(monthZhiIndex: Int, dayGanZhi: String): List<String> {
        val l = ArrayList<String>()
        var m = monthZhiIndex - 2
        if (m < 0) {
            m += 10
        }
//        val matcher: Matcher = Pattern.compile(String.format(";%02X(.[^;]*)", getJiaZiIndex(dayGanZhi))).matcher(DAY_SHEN_SHA[m])
//        if (matcher.find()) {
//            val data: String = matcher.group(1)
//            var i = 0
//            val j = data.length
//            while (i < j) {
//                val index = data.substring(i, i + 2).toInt(16)
//                if (index < 60) {
//                    l.add(SHEN_SHA[index])
//                }
//                i += 2
//            }
//        }
        String.format(";%02X(.[^;]*)", getJiaZiIndex(dayGanZhi)).toRegex().matcher(DAY_SHEN_SHA[m]){
            val data: String = it.value
            var i = 0
            val j = data.length
            while (i < j) {
                val index = data.substring(i, i + 2).toInt(16)
                if (index < 60) {
                    l.add(SHEN_SHA[index])
                }
                i += 2
            }
        }

        if (l.isEmpty()) {
            l.add("无")
        }
        return l
    }

    /**
     * 获取日凶煞
     * @param monthZhiIndex 月地支序号
     * @param dayGanZhi 日干支
     * @return 日凶煞
     */
    fun getDayXiongSha(monthZhiIndex: Int, dayGanZhi: String): List<String> {
        val l = ArrayList<String>()
        var m = monthZhiIndex - 2
        if (m < 0) {
            m += 10
        }
//        val matcher: Matcher = Pattern.compile(String.format(";%02X(.[^;]*)", getJiaZiIndex(dayGanZhi))).matcher(DAY_SHEN_SHA[m])
//        if (matcher.find()) {
//            val data: String = matcher.group(1)
//            var i = 0
//            val j = data.length
//            while (i < j) {
//                val index = data.substring(i, i + 2).toInt(16)
//                if (index >= 60) {
//                    l.add(SHEN_SHA[index])
//                }
//                i += 2
//            }
//        }
        String.format(";%02X(.[^;]*)", getJiaZiIndex(dayGanZhi)).toRegex().matcher(DAY_SHEN_SHA[m]){
            val data: String = it.value
            var i = 0
            val j = data.length
            while (i < j) {
                val index = data.substring(i, i + 2).toInt(16)
                if (index >= 60) {
                    l.add(SHEN_SHA[index])
                }
                i += 2
            }
        }

        if (l.isEmpty()) {
            l.add("无")
        }
        return l
    }

    /**
     * 获取时辰宜
     * @param dayGanZhi 日干支
     * @param timeGanZhi 时干支
     * @return 宜
     */
    fun getTimeYi(dayGanZhi: String, timeGanZhi: String): List<String> {
        val l = ArrayList<String>()
        val day = hex(getJiaZiIndex(dayGanZhi))
        val time = hex(getJiaZiIndex(timeGanZhi))
        val index = TIME_YI_JI.indexOf(day + time + "=")
        if (index > -1) {
            var left = TIME_YI_JI.substring(index + 5)
            if (left.contains("=")) {
                left = left.substring(0, left.indexOf("=") - 4)
            }
            val ys = left.substring(0, left.indexOf(","))
            var i = 0
            val j = ys.length
            while (i < j) {
                val m = ys.substring(i, i + 2)
                l.add(YI_JI[m.toInt(16)])
                i += 2
            }
        }
        if (l.isEmpty()) {
            l.add("无")
        }
        return l
    }

    /**
     * 获取时辰忌
     * @param dayGanZhi 日干支
     * @param timeGanZhi 时干支
     * @return 忌
     */
    fun getTimeJi(dayGanZhi: String, timeGanZhi: String): List<String> {
        val l = ArrayList<String>()
        val day = hex(getJiaZiIndex(dayGanZhi))
        val time = hex(getJiaZiIndex(timeGanZhi))
        val index = TIME_YI_JI.indexOf(day + time + "=")
        if (index > -1) {
            var left = TIME_YI_JI.substring(index + 5)
            if (left.contains("=")) {
                left = left.substring(0, left.indexOf("=") - 4)
            }
            val js = left.substring(left.indexOf(",") + 1)
            var i = 0
            val j = js.length
            while (i < j) {
                val m = js.substring(i, i + 2)
                l.add(YI_JI[m.toInt(16)])
                i += 2
            }
        }
        if (l.isEmpty()) {
            l.add("无")
        }
        return l
    }

    /**
     * 获取干支所在旬下标，0-5
     * @param ganZhi 干支
     * @return 旬下标，0-5
     */
    internal fun getXunIndex(ganZhi: String): Int {
        val ganIndex = find(ganZhi.substring(0, 1), GAN, 0)
        val zhiIndex = find(ganZhi.substring(1), ZHI, 0)
        var diff = ganIndex - zhiIndex
        if (diff < 0) {
            diff += 12
        }
        return diff / 2
    }

    /**
     * 获取干支所在旬
     * @param ganZhi 干支
     * @return 旬
     */
    fun getXun(ganZhi: String): String {
        return XUN[getXunIndex(ganZhi)]
    }

    /**
     * 获取干支所在旬对应的旬空(空亡)
     * @param ganZhi 干支
     * @return 旬空(空亡)
     */
    fun getXunKong(ganZhi: String): String {
        return XUN_KONG[getXunIndex(ganZhi)]
    }
}
